2012-12-07 64 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