使用 boto3,我可以访问我的 AWS S3桶:
s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')
现在,bucket 包含文件夹 first-level
,它本身包含几个以时间戳命名的子文件夹,例如 1456753904534
。
我需要知道这些子文件夹的名称为另一项工作,我正在做,我不知道我是否可以有 boto3为我检索这些。
所以我试着:
objs = bucket.meta.client.list_objects(Bucket='my-bucket-name')
它给出了一个 dictionary,它的键‘ Content’给出了所有的三级文件,而不是二级时间戳目录,实际上我得到了一个包含如下内容的列表
{ u‘ ETag’: ‘ ETag’,u‘ Key’: 第一级/1456753904534/part-00014’,u‘ LastAmendment’: Datetime (2016,2,29,13,52,24,tzinfo = tzutc ()) ,
U‘ Owner’: { u‘ DisplayName’: ‘ Owner’,u‘ ID’: 身份证,
U‘ Size’: Size,u‘ StorageClass’: ‘ storagecclass’}
您可以看到检索到了特定的文件,在本例中是 part-00014
,而我希望只获取目录的名称。
原则上,我可以从所有的路径中去掉目录名,但是在第三级检索所有内容以获得第二级是非常丑陋和昂贵的!
我还尝试了一些报告 给你:
for o in bucket.objects.filter(Delimiter='/'):
print(o.key)
但我没有得到所需的文件夹级别。
有办法解决吗?