相关疑难解决方法(0)

从boto3中检索S3存储桶中的子文件夹名称

使用boto3,我可以访问我的AWS S3存储桶:

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
Run Code Online (Sandbox Code Playgroud)

现在,存储桶包含文件夹first-level,该文件夹本身包含多个以时间戳命名的子文件夹1456753904534.我需要知道我正在做的另一个工作的这些子文件夹的名称,我想知道我是否可以让boto3为我检索这些.

所以我尝试过:

objs = bucket.meta.client.list_objects(Bucket='my-bucket-name')
Run Code Online (Sandbox Code Playgroud)

它提供了一个字典,其中的"内容"键为我提供了所有第三级文件而不是第二级时间戳目录,实际上我得到一个包含所有内容的列表

{u'ETag':'"etag"',u'Key':first-level/1456753904534/part-00014',u'LastModified':datetime.datetime(2016,2,29,13,52,24,tzinfo = tzutc()),
u'Owner':{u'DisplayName':'owner',u'ID':'id'},
u'Size':size,u'StorageClass':'storageclass'}

您可以看到在这种情况下part-00014检索特定文件,而我想单独获取目录的名称.原则上我可以从所有路径中删除目录名称,但是在第三级检索所有内容以获得第二级别是丑陋且昂贵的!

我也试过这里报道的事情:

for o in bucket.objects.filter(Delimiter='/'):
    print(o.key)
Run Code Online (Sandbox Code Playgroud)

但我没有得到所需级别的文件夹.

有办法解决这个问题吗?

python amazon-s3 amazon-web-services boto3

52
推荐指数
9
解决办法
8万
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

boto3 ×1

python ×1