2016-08-29 130 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