Beg*_*ner 6 python amazon-s3 boto amazon-web-services
我正在玩boto图书馆访问亚马逊s3桶.我试图列出存储桶中给定文件夹中的所有文件和文件夹.我使用它来获取所有文件和文件夹:
for key in bucket.list():
print key.name
Run Code Online (Sandbox Code Playgroud)
这为我提供了根目录中的所有文件和文件夹,以及它包含文件的子文件夹,如下所示:
root/
file1
file2
folder1/file3
folder1/file4
folder1/folder2/file5
folder1/folder2/file6
Run Code Online (Sandbox Code Playgroud)
我怎样才能列出say的内容folder1,其中列出的内容如下:
files:
file3
file4
folders:
folder2
Run Code Online (Sandbox Code Playgroud)
我可以使用导航到一个文件夹
for key in in bucket.list(prefix=path/to/folder/)
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,它会将文件folder2列为文件,folder1因为我正在尝试在存储桶路径上使用字符串操作.我已经尝试了每个场景,如果有更长的路径,文件夹有多个文件和文件夹(这些文件夹有更多文件),它仍会中断.是否有递归方式来处理这个问题?
所有信息都是其他答案是正确的,但由于很多人在S3中存储了类似路径的键的对象,API确实提供了一些工具来帮助您处理它们.
例如,在您的情况下,如果您只想列出"子目录" root而不列出下面的所有对象,您将执行此操作:
for key in bucket.list(prefix='root/', delimiter='/'):
print(key.name)
Run Code Online (Sandbox Code Playgroud)
哪个应产生输出:
file1
file2
folder1/
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
for key in bucket.list(prefix='root/folder1/', delimiter='/'):
print(key.name)
Run Code Online (Sandbox Code Playgroud)
得到:
file3
file4
folder2/
Run Code Online (Sandbox Code Playgroud)
等等.你可以通过这种方法完成你想要的任务.
S3 没有可能想到的“文件夹”概念。它是一个单级层次结构,其中文件按键存储。
如果您需要在文件夹内执行单级列表,则必须在代码中限制列表。就像是if key.count('/')==1
| 归档时间: |
|
| 查看次数: |
10133 次 |
| 最近记录: |