我想使用for循环打印2个日期之间的每个日期。实际上要将它与MySQL查询合并,将日期传递给查询本身并输入到输出的文件名中。
那么,我该如何改变呢:
sum = 0
for i in range(1,11):
print sum
sum += i
对此?
InputDate = '2009-01-01'
for i in range('2009-01-01','2009-07-01'):
print InputDate
InputDate += i
我意识到rrule中有一些东西可以完成这个功能:
a = date(2009, 1, 1)
b = date(2009, 7, 1)
for dt in rrule(DAILY, dtstart=a, until=b):
print dt.strftime("%Y-%m-%d")
但是,我只限于旧版本的python。
这是我尝试做的shell脚本版本,如果这有助于澄清:
while [InputDate <= EndDate]
do
sql="SELECT Date,SUM(CostUsd) FROM DailyStats WHERE Date = '$InputDate' GROUP BY Date"
name=$(mysql -h -sN -u -p -e "$sql" > DateLoop-$InputDate.txt db)
echo "$name"
InputDate=$(( InputDate + 1 ))
done
那我怎么能在Python中做到这一点?
在此处添加跟进问题以提高可读性。不幸的是,我不能使用标准的MySQL库,因为我们有一个专有的设置,有许多实例并行运行。运行此类查询的唯一方法是在命令行上一次连接一个实例。
while day&lt; = b: 打印“运行提取物:”天
sql =“SELECT Date,SUM(CostUsd)FROM Stats d WHERE d.Date =”+ day +“GROUP BY Date”
os.system('mysql -h -sN -u -p -e“+ sql +”&gt; DateLoop-“+ day +”.txt db')
day + = one_day
答案 0 :(得分:7)
这将有效:
import datetime
a = datetime.date(2009, 1, 1)
b = datetime.date(2009, 7, 1)
one_day = datetime.timedelta(1)
day = a
while day <= b:
# do important stuff
day += one_day
答案 1 :(得分:2)
试试这个:
import datetime
dt1 = datetime.date(2009, 1, 1)
dt2 = datetime.date(2009, 7, 1)
dt = dt1
while dt <= dt2:
print dt.strftime("%Y-%m-%d")
dt += datetime.timedelta(days=1)
你说你只限于旧版本的Python。如果你没有datetime模块(Python&lt; 2.3),那么你也可以这样做:
import time
dt1 = time.mktime(time.strptime('2009-01-01', '%Y-%m-%d'))
dt2 = time.mktime(time.strptime('2009-07-01', '%Y-%m-%d'))
ONE_DAY = 86400
dt = dt1
while dt <= dt2:
print time.strftime('%Y-%m-%d', time.gmtime(dt))
dt += ONE_DAY
答案 2 :(得分:2)
In [1]: from dateutil.relativedelta import *
In [2]: from datetime import *
In [3]: aday = datetime.today()
In [4]: nextweek = aday+relativedelta(weeks=1)
In [5]: while aday<nextweek:
...: print datetime.strftime(aday,format='%Y-%b-%d')
...: aday+=relativedelta(days=1)
...:
...:
#Output
2009-Aug-03
2009-Aug-04
2009-Aug-05
2009-Aug-06
2009-Aug-07
2009-Aug-08
2009-Aug-09
虽然你可以这样做,但大多数关于使用stdlib(IMO)datetime
的{{1}}的东西都可以让你更快更好地完成它。