给出S3存储桶的路径,我需要在同一路径中找到另一个文件并对其进行处理。
对于那里的每个对象,我都有一个文件路径,在该路径中,我可以找到相应的客户文件,如您从终端的以下打印图中看到的那样:
In [7]: HouseList.objects.get(id=11508).file_path
Out[7]: u'85/1545927/omc_emea_hl_small.csv'
In [8]: CustomerFile.objects.get(id=5031).file_path
Out[8]: u'85/1545927/omc_emea_pos_small.csv'
有没有一种方法,给定路径的前缀,以获取其中所有文件的列表?
答案 0 :(得分:1)
您可以在Python中使用s3 boto模块列出位于其中的具有给定前缀的文件:http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.list
前缀(字符串)–允许您将列表限制为特定的前缀。例如,如果您使用prefix =” / foo /”调用该方法,则迭代器将仅循环浏览以字符串“ / foo /”开头的键。
答案 1 :(得分:1)
list_objects_v2()
函数可以返回给定前缀的对象列表:
response = client.list_objects_v2(
Bucket='string',
Delimiter='string',
EncodingType='url',
MaxKeys=123,
Prefix='string',
ContinuationToken='string',
FetchOwner=True|False,
StartAfter='string',
RequestPayer='requester'
)
因此,您将使用类似的内容:
path = HouseList.objects.get(id=11508).file_path
response = client.list_objects_v2(
Bucket=your_bucket,
Prefix=path[:path.rfind('/')+1],
)