我在s3存储桶中有一堆文件,它们的前缀类似于下面的示例。我想与boto3连接,并在存储桶中创建一个日期部分早于一天的所有前缀的列表。例如,如果当前日期是
'20191226_1213'
然后,我想创建一个列表,如下所示。谁能建议如何使用boto3做到这一点?
示例:
's3://basepath/20191225_1217/'
's3://basepath/20191224_1012/'
's3://basepath/20191222_1114/'
所需的输出:
['s3://basepath/20191224_1012/','s3://basepath/20191222_1114/']
答案 0 :(得分:1)
以下是一些代码,可在给定存储桶的根目录中提取通用前缀,并对照“一天前”检查其名称:
import boto3
import datetime
s3_client = boto3.client('s3')
now = datetime.datetime.now()
comparison_time = now - datetime.timedelta(days=1)
comparison_time_string = comparison_time.strftime("%Y%m%d_%H%M") # eg 20191225_0623
response = s3_client.list_objects_v2(Bucket='my-bucket', Delimiter='/')
for prefix_dict in response['CommonPrefixes']:
prefix = prefix_dict['Prefix']
if prefix < comparison_time_string}:
print(prefix)
但是,请注意时间定义。根据运行代码的位置,时区可能会(或者可能会不是)设置为UTC。这可能匹配或可能不匹配在文件夹名称上生成那些日期和时间的任何内容。