使用python和boto在s3中获取包含文件的所有子目录的最佳方法

问题描述 投票:0回答:1

在s3中是否有任何方法可以对存储桶进行通配符搜索?使用python和boto。我需要复制包含特定文件的所有子目录,最佳方法是什么?

python python-2.7 amazon-web-services amazon-s3 boto
1个回答
0
投票

list_buckets_v2()命令不接受通配符。

最接近的选项是传递list_buckets_v2()Prefix的能力,它实际上就像在特定的子目录中一样工作。

您将需要编写自己的逻辑来确定要复制哪个对象(不是目录)。如果您希望复制整个子目录,则代码将需要遍历该路径中的每个对象并分别复制该对象。

如果您的要求是“复制包含特定文件的所有子目录”,则需要:

  • 通过列出所有对象进行第一遍
  • 循环浏览对象键(文件名),在键的末尾(从最后一个斜杠(Delimiter开始)查找所需的文件名)
  • 如果找到文件名,则在列表中添加前缀(每个up to最后一个斜杠)
  • 对于添加到列表中的每个路径,执行另一个/,将该路径作为前缀传递,并为每个对象调用list_objects_v2()命令

((仅通过一次copy_object()调用就可以实现上述目的,但是从逻辑上讲,上面的方法比较简单。您可以选择。)

© www.soinside.com 2019 - 2024. All rights reserved.