2014-11-14 70 views
0

我目前正在与django与S3交互的方式工作。我发现boto库很有用,但是有兴趣创建一个函数来返回特定存储区内文件列表的名称,所以我可以遍历并下载其中一部分文件通过特定目录。Django检索S3存储桶中的文件列表

import boto 
from boto.s3.key import Key 

def get_s3_filename_list(directory): 

    bucket_name = AWS_BUCKET_NAME 

    conn = boto.connect_s3(
     KEY_ID, 
     ACCESS_KEY 
    ) 

    bucket = conn.get_bucket(bucket_name) 

    key = bucket.get_key(directory) 

但是,返回的关键字无。 想知道是否有人有经验获得文件名列表。

任何意见或链接将不胜感激。 谢谢!

+2

使用'bucket.list'作为答案,但是传入'directory'。像这样:'for key in bucket.list(directory):print key.name'。 – 2014-11-14 17:10:06

+0

谢谢!这与下面的答案相结合令人惊讶! – RCN 2014-11-16 02:44:48

回答

2

这应该工作。

from boto.s3.connection import S3Connection 

conn = S3Connection(settings.AWS_ACCESS_KEY_ID,settings.AWS_SECRET_ACCESS_KEY) 
bucket = conn.get_bucket(settings.MEDIA_BUCKET) 

for key in bucket.list(): 
    print key.name 
+0

这从整个存储桶中取出,而不是从该存储桶中的特定目录中取出。这会工作,而不是通过目录名称? – RCN 2014-11-14 16:42:18

+0

请参阅上面的pavel_form注释。很高兴它解决了。 – scoopseven 2014-11-17 15:29:14

+0

谢谢!是的 - 我看到了!综合答案都非常有帮助 – RCN 2014-11-18 16:19:15