Pep*_*uis 2 python amazon-s3 boto amazon-web-services boto3
做类似以下的事情:
s3 = boto3.resource('s3')
bucket = s3.Bucket('a_dummy_bucket')
bucket.objects.all()
Run Code Online (Sandbox Code Playgroud)
将返回'a_dummy_bucket'桶下的所有对象,如:
test1/blah/blah/afile45645.zip
test1/blah/blah/afile23411.zip
test1/blah/blah/afile23411.zip
[...] 2500 files
test2/blah/blah/afile.zip
[...] 2500 files
test3/blah/blah/afile.zip
[...] 2500 files
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是否有任何方法可以获得'test1','test2','test3'等...而不对所有结果进行分页?为了达到'test2',我需要3个分页调用,每个调用1000个密钥,知道有一个'test2',然后其他3个有1000个密钥来达到'test3',依此类推.
如何在不对所有结果进行分页的情况下获取所有这些前缀?
谢谢
我相信获得通用前缀是你可能正在寻找的.使用此示例可以完成以下操作:
import boto3
client = boto3.client('s3')
paginator = client.get_paginator('list_objects')
result = paginator.paginate(Bucket='my-bucket', Delimiter='/')
for prefix in result.search('CommonPrefixes'):
print(prefix.get('Prefix'))
Run Code Online (Sandbox Code Playgroud)
AWS Documentation#Bucket.Get关于Common Prefixes的说明如下:
只有在指定分隔符时,响应才能包含CommonPrefixes.执行此操作时,CommonPrefixes包含Prefix与分隔符指定的下一个字符串之间的所有键(如果有).实际上,CommonPrefixes列出了与Prefix指定的目录中的子目录相同的键.例如,如果前缀是notes /并且分隔符是斜杠(/),则在notes/summer/july中,公共前缀是notes/summer /.在计算返回数时,在公共前缀中汇总的所有密钥都计为单个返回.见MaxKeys.
类型:字符串
祖先:ListBucketResult
| 归档时间: |
|
| 查看次数: |
2426 次 |
| 最近记录: |