我有两个日期值(可以是任何日期)
start_dt='2019-07-20 00:01'
end_dt='2019-07-24 23:59'
需要生成以下行的文件
行数=(end_dt-start_dt)为5
start_sequence必须增加50
start_date|end_date|start_sequence
2019-07-20 00:01|2019-07-24 23:59|0
2019-07-20 00:01|2019-07-24 23:59|50
2019-07-20 00:01|2019-07-24 23:59|100
2019-07-20 00:01|2019-07-24 23:59|150
2019-07-20 00:01|2019-07-24 23:59|200
感谢您的帮助,以下是我的Python 2.7上的最终工作代码
import csv
from datetime import datetime, timedelta
dt_fmt = "%Y-%m-%d %H:%M"
start_dt = datetime.strptime('2019-07-20 00:01', dt_fmt)
end_dt = datetime.strptime('2019-07-24 23:59', dt_fmt)
num_rows = (end_dt - start_dt)
num_rows += timedelta(hours=1)
with open('out.txt', 'w') as f:
writer = csv.writer(f, delimiter='|')
headers = ['start_date','end_date','start_sequence']
writer.writerow(headers)
for i in range(0, num_rows.days*50, 50):
row = []
row.append(start_dt)
row.append(end_dt)
row.append(i)
writer.writerow(row)
f.close()
分析解答
假设您有datetime
对象并想要写纯文本文件:
from datetime import datetime, timedelta
dt_fmt = "%Y-%m-%d %H:%S"
start_dt = datetime.strptime('2019-07-20 00:01', dt_fmt)
end_dt = datetime.strptime('2019-07-24 23:59', dt_fmt)
num_rows = (end_dt - start_dt)
您的情况下的num_rows.days将为4.如果您希望它为5,您可能需要根据需要编写舍入算法。这样的事情可能适合你的情况。
num_rows += timedelta(hours=1)
with open('out.txt', 'w') as f:
f.write("start_date|end_date|start_sequence\n")
for i in range(0, num_rows.days*50, 50):
f.write(f"{start_dt}|{end_dt}|{i}\n")
日期:
start_date|end_date|start_sequence
2019-07-20 00:00:01|2019-07-24 23:00:59|0
2019-07-20 00:00:01|2019-07-24 23:00:59|50
2019-07-20 00:00:01|2019-07-24 23:00:59|100
2019-07-20 00:00:01|2019-07-24 23:00:59|150
2019-07-20 00:00:01|2019-07-24 23:00:59|200