use*_*776 7 python amazon-s3 boto
我喜欢写一个boto python脚本从s3存储桶下载最近的大多数文件,即例如我在s3存储桶中有100个文件,我需要下载最近上传的最多文件.
有没有办法使用python boto从S3下载最近修改过的文件.
gar*_*aat 14
您可以列出存储桶中的所有文件,并找到具有最新文件的文件(使用last_modified属性).
>>> import boto
>>> c = boto.connect_s3()
>>> bucket = c.lookup('mybucketname')
>>> l = [(k.last_modified, k) for k in bucket]
>>> key_to_download = sorted(l, cmp=lambda x,y: cmp(x[0], y[0]))[-1][1]
>>> key_to_download.get_contents_to_filename('myfile')
Run Code Online (Sandbox Code Playgroud)
但请注意,如果存储桶中有大量文件,这将是非常低效的.在这种情况下,您可能需要考虑使用数据库来跟踪文件和日期,以使查询更有效.
要添加到@ garnaat的答案,您可以通过使用prefix
减少匹配的文件来解决效率低下的问题.而不是c.lookup
,这个例子只会搜索subdir
subbucket中以以下内容开头的文件file_2014_
:
>>> import boto
>>> c = boto.connect_s3()
>>> bucket = c.get_bucket('mybucketname')
>>> bucket_files = bucket.list('subdir/file_2014_')
>>> l = [(k.last_modified, k) for k in bucket_files]
>>> key_to_download = sorted(l, cmp=lambda x,y: cmp(x[0], y[0]))[-1][1]
>>> key_to_download.get_contents_to_filename('target_filename')
Run Code Online (Sandbox Code Playgroud)