[英]List AWS S3 folders with boto3
我有在 levelOne 文件夹中收集 S3 子文件夹的 boto 代码:
import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket("MyBucket")
for level2 in bucket.list(prefix="levelOne/", delimiter="/"):
print(level2.name)
请帮助发现 boto3 中的类似功能。 代码不应遍历所有 S3 对象,因为存储桶有大量对象。
我认为以下内容应该是等效的:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('MyBucket')
for object in bucket.objects.filter(Prefix="levelOne/", Delimiter="/"):
print(object.key)
如果您只是寻找文件夹列表,则使用列出对象时返回的CommonPrefixes
。 请注意,必须指定Delimiter
才能获取CommonPrefixes
:
import boto3
s3_client = boto3.client('s3')
response = s3_client.list_objects_v2(Bucket='BUCKET-NAME', Delimiter = '/')
for prefix in response['CommonPrefixes']:
print(prefix['Prefix'][:-1])
如果您的存储桶有大量文件夹和对象,您可以考虑使用Amazon S3 Inventory ,它可以提供每日或每周CSV文件列出所有对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.