python - 使用python和boto获取s3中包含文件的所有子目录的最佳方法
问题描述
有没有办法在 s3 中的存储桶上进行通配符搜索?使用python和boto。我需要复制包含特定文件的所有子目录,最好的方法是什么?
解决方案
该list_buckets_v2()
命令不接受通配符。
最接近的选项是传递一个Prefix
and的能力Delimiter
,它实际上就像在一个特定的子目录中查找一样。
您将需要编写自己的逻辑来确定要复制哪些对象(不是目录)。如果您希望复制整个子目录,代码将需要遍历该路径中的每个对象并单独复制该对象。
如果您的要求是“复制包含特定文件的所有子目录”,则需要:
- 通过列出所有对象进行第一遍
- 遍历对象键(文件名),在键的末尾(从最后一个斜杠 (
/
) 开始)查找所需的文件名 - 如果找到文件名,则将前缀(直到最后一个斜杠)添加到列表中
- 对于添加到列表中的每个路径,执行另一个
list_objects_v2()
将路径作为前缀传递,并copy_object()
为每个对象调用命令
(您只需一次list_objects_v2()
调用即可实现上述目的,但上述方法在逻辑上更简单。您的选择。)
推荐阅读
- c++ - Dectecting template methods with SFINAE
- python - 在 Python 3.7 中查找配对类型列表(字符串集合)的交集?
- android - 从 Firebase 实时数据库中获取并比较键和值
- file - C- 连接的头文件
- c - 如果我们同时初始化所有 union 成员会发生什么?
- java - 如何正确获得 sqlite 连接?
- java - 如何在我的应用程序中集成 torrent 视频播放器?
- c# - 在 C# 中使用 Cortana/搜索栏查找程序
- android - Android Picasso 给出混合版本错误
- pentaho - 如何从 localhost:port/pentaho 在 linux 上运行 Pentaho 控制台?