2012-11-20 51 views
0

我正在嘗試創建一個腳本,用於從S3亞馬遜存儲桶中獲取最近過期的文件。這是我與目前使用的代碼:Python S3 - 制定最新日期

#!/usr/bin/env python 

import boto 
import boto.s3 
from boto.s3.key import Key 

# Define variables 
AWS_ACCESS_KEY_ID = '' 
AWS_SECRET_ACCESS_KEY = '' 
BUCKET_NAME = 'My Bucket' 
BUCKET = conn.get_bucket(bucket_name) 
CONN = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 

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

我還沒有有機會註冊到亞馬遜尚未對此進行測試,但我發現這個代碼在互聯網上,它應該列出的所有文件桶。

我的文件每一個的日期具有以下名稱格式:

NOW = datetime.datetime.now().strftime("%Y-%m-%d__%H-%M") 
Example: 1999-01-30__10-30 (10:30 on the 30th Jan 1999) 

我的問題是,如果我想找出它是基於其過時的文件名最近的文件,有什麼好辦法這是怎麼回事?

回答

1

只需對文件名進行排序;最近的文件將是最後一個:

>>> sorted(['1999-01-30__10-30', '2012-10-10__11-22', '2011-01-30__22-11']) 
['1999-01-30__10-30', '2011-01-30__22-11', '2012-10-10__11-22'] 
+0

感謝您的建議,這將工作,即使在我目前的格式?我是python的新手,你是否介意給我多一點關於如何放入這個排序命令的信息? – Jimmy

+0

@ user1738522:有關Python中排序的更多信息,請參見http://wiki.python.org/moin/HowTo/Sorting/。你可以使用'from operators import attrgetter'按名稱排序你的桶密鑰; sort(bucket.list(),key = attrgetter('name')')。 –