我的水桶结构如下:
bucket
production
dt=2017-01-01
file1.json
...
dt=2017-05-01
file2.json
我想要的是获取file1.json,file2.json的完整路径,以便我可以下载它们。
我很难做到这一点就是python。任何帮助表示赞赏。 TIA。
答案 0 :(得分:8)
s3 = boto3.client('s3')
您可以通过调用list_objects
objs = s3.list_objects(Bucket='mybucket')['Contents']
使用列表推导,获取忽略文件夹(大小为0)的对象名称
[obj['Key'] for obj in objs if obj['Size']]
或强>:
s3 = boto3.resource('s3')
bucket = s3.Bucket('mybucket')
[key.key for key in bucket.objects.all() if key.size]
如果要列出具有特定前缀的对象:
# S3 list all keys with the prefix 'photos/'
s3 = boto3.resource('s3')
bucket = s3.Bucket('production')
for obj in bucket.objects.filter(Prefix='2017-01-01/'):
if obj.size: print obj.key
答案 1 :(得分:1)
当从Amazon S3检索到对象列表时,对象的Key始终是其完整路径:
import boto3
s3 = boto3.resource('s3')
for key in bucket.objects.all():
print key.key
结果:
production/dt=2017-01-01/file1.json
production/dt=2017-01-01/file2.json
production/dt=2017-05-01/file1.json
production/dt=2017-05-01/file2.json