2015-02-11 51 views
0

注:我知道,亞馬遜的水桶沒有文件夾的概念,但使用期限爲簡單起見在S3存儲桶文件和fodler之間的分類-python

所以IAM我嘗試列出文件在我的s3桶中使用boto。它的使用非常簡單:

for files in bucket.list(): 
      print files.name 

其中列出了這樣

file1 
file2 
file3 
test_folder/file4 
test_folder/file5 

如何我這裏的文件和文件夾之間進行分類的輸出?我只想列出文件,然後只有一個文件夾test_folder

尋找這樣的事情:

File:s 
    file1 
    file2 
    file3 
Folders: 
    test_folder 

回答

1

這聽起來像你想禁止「文件:」輸出它們包含在文件夾中(所有文件即那些在其文件名「/」字符),然後在最後單獨打印不同的文件夾名稱。如果是這樣,這樣的事情如何:

print "Files: " 
folders = set() 
for files in bucket.list(): 
    if '/' not in files.name: 
    print "\t", files.name 
    else: 
    folders.add(files.name[:files.name.rfind('/')]) 

print "Folders: " 
for folder in folders: 
    print "\t", folder 
+0

此解決方案不工作時,我把路徑作爲'test_folder/test_folder1'等等。 – letsc 2015-02-12 21:48:00

+0

爲什麼不呢?處理這種嵌套文件夾時會得到什麼輸出,以及您期望的輸出是什麼? – 2015-02-12 22:06:04

+0

如果這些文件位於多個文件夾內部,則它們被命名爲'path/to/file/filename.txt'。所以當我使用你的'if'語句時,他們跳過了,因爲我們只搜索'if'/'not in file:' – letsc 2015-02-12 23:32:18