【发布时间】:2023-03-28 10:16:01
【问题描述】:
使用 boto3,如何在不检索文件夹的情况下检索 S3 存储桶中的所有文件?
考虑以下文件结构:
file_1.txt
folder_1/
file_2.txt
file_3.txt
folder_2/
folder_3/
file_4.txt
在这个例子中,我只对 4 个文件感兴趣。
编辑:
手动解决方案是:
def count_files_in_folder(prefix):
total = 0
keys = s3_client.list_objects(Bucket=bucket_name, Prefix=prefix)
for key in keys['Contents']:
if key['Key'][-1:] != '/':
total += 1
return total
在这种情况下,总数为 4。
如果我这样做了
count = len(s3_client.list_objects(Bucket=bucket_name, Prefix=prefix))
结果将是 7 个对象(4 个文件和 3 个文件夹):
file.txt
folder_1/
folder_1/file_2.txt
folder_1/file_3.txt
folder_1/folder_2/
folder_1/folder_2/folder_3/
folder_1/folder_2/folder_3/file_4.txt
我只是想要:
file.txt
folder_1/file_2.txt
folder_1/file_3.txt
folder_1/folder_2/folder_3/file_4.txt
【问题讨论】:
标签: python amazon-web-services amazon-s3 boto3