我有一个带有以下关键结构的水桶:
path/to/file1
path/to/file2
path/of/file3
path/of/file4
我希望能够在path
中获取"文件夹"列表。实际用例有许多"子文件夹",因此我需要过滤清单。理想情况下,我只想收到两个条目:to
和of
。
使用boto3,我期望以下两个呼叫基本上相等,即两者的列表都会产生相同的结果:
使用S3 Resource返回的存储桶
s3 = boto3.resouce('s3')
bucket = s3.Bucket('bucketname')
bucket.objects.filter(Prefix='path/', Delimiter='/').all()
和基础客户端
s3 = boto3.resouce('s3')
s3.meta.client.list_objects(Bucket='path', Prefix='', Delimiter='/')
但是,第一个返回emtpy列表,而第二个则返回带有两个条目的CommonPrefixes
键的JSON。
问题:我想念什么?
来自https://github.com/boto/boto3/issues/134#issuecomment-116766812
之所以不包含在返回的对象列表中的原因是 使用定界符时您期望的值为 前缀(例如
Europe/
,North America
)和前缀不映射 进入对象资源接口。