2016-12-02 5 views
0

私はS3バケットにファイルを持っています。データファイルの名前は、標準ラベルの末尾に日付が付けられます。例えばpython time delta - 時間を含む

、ファイルのキーは、次のようになります

test_file_2016-12-01.tar.gz

私は日付yに日付xからファイルをダウンロードしたいです。

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) 

は、しかし、私は今より細かい解像度データを収集していますし、時間分解能でデータを追加したい:私はそうのようにこれを行うことができます。

したがって、ファイルは次のようになります。私はdatetimetimedelta機能を使用しても時間のデルタのを扱うことができるが、これは、同様hourをサポートしていません

test_file_2016-12-01-10.tar.gz

がどのように私はこのようなものの間でファイルを取り込む指定するために調整することができます。

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

答えて

1

内部的には、我々は最初の数秒の計算を完了する必要があることを意味秒にtimedelta時間を変換しますdatetimeモジュール、および希望の時間範囲を得るために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) 
関連する問題