2016-08-29 159 views
1

我試圖獲取存儲桶子文件夾中的文件列表。一切工作正常,除了,當我試圖解析文件時,我注意到我的代碼拉的第一個鍵是子文件夾的名稱。有什麼辦法可以將子文件夾名稱作爲關鍵字嗎?從打印Boto3獲取S3存儲桶的內容

s3 = session.resource('s3') 
bucket = s3.Bucket('bucket_name') 

for obj in bucket.objects.filter(Prefix="sub1"): 
    key = obj.key 
    print(key) 

結果關鍵

sub1/ 
sub1/file1 
sub1/file2 
. 
. 
+0

重要的一點是:不要以爲這個值會一直存在。這是在控制檯中顯式創建文件夾或使用s3fs等特定第三方工具的工件。如果你從API創建'my/example/object.txt',從來沒有直接創建過「我的」或「example」文件夾,這些文件夾仍然會出現在控制檯中,但是「my /'和'my/example /'不會被List Objects API返回。 –

回答

2

我想像上有正宗.exclude像Django的,但我不能把它作爲一個選項。你可以嘗試這樣的事情

s3 = session.resource('s3') 
bucket = s3.Bucket('bucket_name') 
prefix = "sub1/" 
data = [obj for obj in list(bucket.objects.filter(Prefix=prefix)) if obj.key != prefix] 

for obj in data: 
    print(obj.key) 
+0

效果很好。謝謝。 – maltman