我想从前缀文件夹下载文件,而不是前缀文件夹内的子目录。我运行下面的代码,但它列出了包括子目录在内的前缀文件夹内的所有文件。有没有办法只列出前缀文件夹中的文件?
bucket = aws_resource_session.Bucket(bucket_name)
for obj in bucket.objects.filter(Prefix=s3_end_point_properties["prefix"]):
print(obj.key)
谢谢,Imran Khan
。我想从前缀文件夹下载文件,而不是前缀文件夹内的子目录。我运行下面的代码,但它列出了包括子目录在内的前缀文件夹内的所有文件。有没有办法只列出前缀文件夹中的文件?
bucket = aws_resource_session.Bucket(bucket_name)
for obj in bucket.objects.filter(Prefix=s3_end_point_properties["prefix"]):
print(obj.key)
谢谢,Imran Khan
。示例:
import boto3
s3 = boto3.client("s3")
rsp = s3.list_objects_v2(Bucket="mybucket", Prefix="myprefix/", Delimiter="/")
print("Objects:", list(obj["Key"] for obj in rsp["Contents"]))
print("Sub-folders:", list(obj["Prefix"] for obj in rsp["CommonPrefixes"]))
使用 Prefix="csv/"
的示例输出:
Objects: ['csv/a.csv', 'csv/b.csv', 'csv/c.csv']
Sub-folders: ['csv/corrupt/', 'csv/complete/']
Delimiter
参数,则该前缀及以下的所有对象都将在"Contents"
中出现,例如:Objects: ['csv/a.csv', 'csv/b.csv', 'csv/c.csv', 'csv/corrupt/d.csv', 'csv/complete/e.csv']
[f for f in objects if not f.endswith('/')]
- jarmodobjects = bucket.objects.filter(Prefix=prefix)
[obj for obj in objects if '/' not in obj.key.replace(prefix,'')]