使用python和boto3抢占文件名的一部分

问题描述

我刚开始使用python,但我仍然是一个新手,我想创建一个函数来捕获文件名的一部分,这些文件名与将这些文件存储在s3存储桶中的某种模式相对应。

以我为例,假设我有5个.txt文件

Transfarm_DAT_005995_20190911_0300.txt Transfarm_supplierDivision_058346_20190911_0234.txt Transfarm_supplierDivision_058346_20200702_0245.txt Transfarm_supplierDivision_058346_20200703_0242.txt Transfarm_supplierDivision_058346_20200704_0241.txt

我希望脚本通过这些文件名,在文件扩展名之前获取字符串“类别,即“ Transfarm_DAT”和日期“ 20190911””。

您能向我指出可以帮助我的python模块和指南的方向吗?

解决方法

如果文件名始终像这样,请签出splitjoin函数。否则,正则表达式是另一种途径。

files_list = ['Transfarm_DAT_005995_20190911_0300.txt ','Transfarm_SupplierDivision_058346_20190911_0234.txt','Transfarm_SupplierDivision_058346_20200702_0245.txt','Transfarm_SupplierDivision_058346_20200703_0242.txt','Transfarm_SupplierDivision_058346_20200704_0241.txt']

category_list = []
date_list = []
for f in files_list:
    date = f.split('.')[0].split('_',2)[2]
    category = '_'.join([f.split('.')[0].split('_')[0],f.split('.')[0].split('_')[1]])
    # print(category,date)
    category_list.append(category)
    date_list.append(date)
print(category_list,date_list)

输出列表:

['Transfarm_DAT','Transfarm_SupplierDivision','Transfarm_SupplierDivision'] ['005995_20190911_0300','058346_20190911_0234','058346_20200702_0245','058346_20200703_0242','058346_20200704_0241']