2016-12-06 31 views
0

我正在調用API,但API一次只能提供一年的數據。但我想用一個循環來提取超過一年的數據。使用Python動態地在函數內循環日期

我有一個範圍下面開始和結束日期:

startdate = datetime.date(2011, 9, 6) 
enddate = datetime.date(2014, 10, 12) 

我寫了一個很長的功能(這裏沒有顯示),並使用下面的代碼來調用該函數並傳入參數:

get_hourly_WSI_latlong_historical (startdate, enddate, lat, long, fields = None) 

如何在循環函數中寫下面的大塊代碼? ...它必須是功能格式。在下面的代碼中,我不想明確列出每個開始日期和結束日期,而是希望根據上面提供的'startdate'和'enddate'變量動態派生這些值。 我該怎麼做?

WSI_Hourly = get_hourly_WSI_latlong_historical (datetime.date(2011, 9, 6), datetime.date(2011, 12, 31), 39.742721,-105.0816042, fields=None) 
WSI_Hourly1 = get_hourly_WSI_latlong_historical (datetime.date(2012,1,1), datetime.date(2012,12,31), 39.742721,-105.0816042, fields=None) 
WSI_Hourly = WSI_Hourly.append(WSI_Hourly1,ignore_index=True) 
WSI_Hourly1 = get_hourly_WSI_latlong_historical (datetime.date(2013,1,1), datetime.date(2013,12,31), 39.742721,-105.0816042, fields=None) 
WSI_Hourly = WSI_Hourly.append(WSI_Hourly1,ignore_index=True) 
WSI_Hourly1 = get_hourly_WSI_latlong_historical (datetime.date(2014,1,1), datetime.date(2014,10,12), 39.742721,-105.0816042, fields=None) 
WSI_Hourly = WSI_Hourly.append(WSI_Hourly1,ignore_index=True) 

任何幫助,非常感謝。

回答

0

只要找到開始日期和結束日期

from datetime import datetime 

def get_hourly_WSI_latlong_historical(datetime1, datetime2): 
    #YOUR CODE HERE 

def my_wrapper_func(startdate, enddate): 
    middle_years = range(startdate.year+1, enddate.year) 
    _all = [] 
    _all.append(get_hourly_WSI_latlong_historical(startdate, datetime(startdate.year, 12, 31))) 
    for year in middle_years: 
     _all.append(get_hourly_WSI_latlong_historical(datetime(year, 1, 1), datetime(year, 12, 31))) 
    _all.append(get_hourly_WSI_latlong_historical(datetime(enddate.year, 1, 1), datetime(enddate.year, 12, 31))) 
    return _all 

my_wrapper_func(datetime(2010, 2, 1), datetime(2015, 2,1)) 
+0

感謝您的快速響應歲之間。我收到以下錯誤:無效的語法:'在middle_years年:'錯誤指針胡蘿蔔指向該代碼行的':'部分......想法? – PineNuts0

+0

語法錯誤已修復 –

+0

當我運行上面的代碼時出現以下錯誤:「TypeError:get_hourly_WSI_latlong_historical()缺少2個必需的位置參數:'lat'和'long'」;我試着自己放置經久不變的參數,但是它出錯了......我不確定我是否把它們放在正確的位置......思考? – PineNuts0