我需要以 mm_dd 格式生成 9 月 17 日到 10 月 18 日之间的日期。我所做的是像这样使用 2 个单独的循环...
9 月 17 日至 30 日数据 # 09_17 至 09_30
for i in range(17, 31):
receiver=x.runQuery("copy dlr_2014_198_bk_todel from 'http://www/sms_sending18.179.67.198_2015_09_"+str(i).zfill(2)+"_utf.csv.gz' CREDENTIALS delimiter '\t' emptyasnull escape gzip")
10 月 1 日至 18 日数据#10_01 至 10_18
for i in range(1, 19):
receiver=x.runQuery("copy dlr_2014_198_bk_todel from 'http://www/sms_sending18.179.67.198_2015_10_"+str(i).zfill(2)+"_utf.csv.gz' CREDENTIALS delimiter '\t' emptyasnull escape gzip")
是否可以为此使用单个循环? (日期范围可能是几天或几年)如何动态生成格式为 2015_09_17 的日期,这些日期可以在 for 循环中使用?
请您参考如下方法:
您可以使用 datetime 和 timedelta。循环将开始日期递增一天,直到到达结束日期。
优点:自动处理可变的月份长度。
#!/bin/python
from datetime import datetime, timedelta
start = datetime(2015,9,17)
end = datetime(2015,10,18)
step = timedelta(days=1)
while start <= end:
print start.strftime('%Y_%m_%d')
start += step
