2012-12-07 47 views
2

我已经深入了一点。我想在S3上存储备份,然后在下载S3存储桶的特定“文件夹”中最新修改的文​​件时尝试下载脚本。Boto - 从S3获取最新信息

我能走到今天:

import boto 
s3conn = boto.connect_s3() 
bucket = s3conn.lookup('my_bucket_name') 
for key in bucket: 
    print k.name, k.last_modified 

key.getfile() 

到目前为止,这种设计是为了让名字和最后修改桶的每个文件。这是我被卡住的地方,因为我需要获得最新的信息,然后下载它,那就是我卡住的地方。

任何人都可以提供帮助吗?

回答

1

您需要通过last_modifed对键列表进行排序,然后列表的最后一项将成为您想要的文件。事情是这样的:

key_list = bucket.list() 
key_list.sort(cmp = lambda x, y: 
    cmp(x.last_modified, y.last_modified)) 
key_list[-1].get_file(destination_fp) 

这里的另一种方法来排序,你可以尝试:

key_list.sort(key=lambda x: x.last_modified) 
+2

您不必时间戳字符串转换为一个时间对象或日期时间。他们是ISO8601的日期字符串,他们会很好地排序为字符串。 – garnaat

+0

如果没有转换,你会怎么做?会是这样吗? https://gist.github.com/4242333 – Jimmy

+0

不,last_modified是列表中每个键的属性。我已经编辑了我的答案,以便消除不必要的对话。 – khagler