2016-12-02 60 views
0

我在S3存儲桶中有文件。數據文件以標準標籤末尾的日期命名。python時間delta - 包含小時至今

例如,文件關鍵是這樣的:

test_file_2016-12-01.tar.gz

我想從最新x文件下載到最新y。我能做到這一點,像這樣:

conn = boto.connect_s3(host="s3-eu-west-1.amazonaws.com") 
bucket = conn.get_bucket(bucket_name) 
k = Key(bucket) 
key_prefix = "test_file" 
date_o = date(2016,11,30) 
date_1 = date(2016,12,01) 
day_delta = date_1 - date_o 
for i in range(day_delta.days +1): 
    file_key = key_prefix + str(date_o + td(days=i)) + "tar.gz" 
    # Get the file 
    k.key = file_key 
    # Location for download destination 
    temp_location = "./tmp/" + file_key 
    k.get_contents_to_filename(temp_location) 

不過,我現在收穫更高分辨率的數據,並希望與小時的分辨率添加數據。

因此這些文件看起來像這樣:

test_file_2016-12-01-10.tar.gz

我可以使用datetimetimedelta功能以及處理時間差的,但這不支持hour爲好。

如何調整這個指定捕捉喜歡的東西之間的文件:

date_o = datetime(2016,11,30,01,0,0) 
date_1 = datetime(2016,12,01,12,0,0) 

回答

1

內部,datetime模塊將timedelta小時轉換成秒,這意味着我們必須先完成以秒爲單位計算然後再減3600以獲得我們想要的時間範圍。之後,我們只需要提供strftime我們所需的格式,因爲我們迭代以顯示個別小時。

import datetime as dt 

date_o = dt.datetime(2016, 11, 30, 0) 
date_1 = dt.datetime(2016, 12, 1, 0) 

delta_hours = (date_1 - date_o + dt.timedelta(hours=1)).total_seconds()/3600 

for hour in range(int(delta_hours)): 
    current_time = date_o + dt.timedelta(hours=hour) 
    file_name = 'test_file_' + dt.datetime.strftime(current_time, 
                '%Y-%m-%d-%H') + '.tar.gz' 
    print(file_name)