在每个 s3 存储桶中搜索并查看给定文件夹是否存在

pyl*_*ner 6 python amazon-s3 amazon-web-services python-3.x

我正在尝试从 s3 Buckets 中的特定文件夹中获取文件:

我在 s3 中有 4 个存储桶,名称如下:

1 - 'PDF'
2 - 'TXT'
3 - 'PNG'
4 - 'JPG'
Run Code Online (Sandbox Code Playgroud)

所有 s3 存储桶的文件夹结构如下所示:

1- PDF/analysis/pdf-to-img/processed/files
2- TXT/report/processed/files
3- PNG/analysis/reports/png-to-txt/processed/files
4- JPG/jpg-to-txt/empty
Run Code Online (Sandbox Code Playgroud)

我必须检查processed/files存储桶中是否存在此文件夹前缀,如果存在,我将读取这些目录中存在的文件,否则我将忽略它们。


代码:

buckets = ['PDF','TXT','PNG','JPG']

client = boto3.client('s3')
for i in bucket:
    result = client.list_objects(Bucket=i,Prefix = 'processed/files', Delimiter='/')
    print(result)
Run Code Online (Sandbox Code Playgroud)

如果文件夹结构相同,我可以进入每个目录,但是当每个存储桶的文件夹结构不同时,我该如何处理?

小智 5

这可能是一个漫长的过程。

 buckets = ['PDF','TXT','PNG','JPG']
    s3_client = getclient('s3')
    for i in buckets:
        result = s3_client.list_objects(Bucket= i, Prefix='', Delimiter ='')
        contents = result.get('Contents')
        for content in contents:
            if 'processed/files/' in content.get('Key'):
                print("Do the process")
Run Code Online (Sandbox Code Playgroud)

您可以从 s3 存储桶中获取目录列表。如果它包含所需的文件夹,请执行所需的过程。