最初,我接受了一项练习,其中我必须编写' RandomFile.txt'作为七个单独的行,每行列出给定的整数和当前时间的总和。完成此任务后,我被分配显示每行增加一秒(即第一行= 5s,第二行= 6s,第三行= 7s等),并且还增加了与&#相关的行开始的日期39;空白。'
使用以下代码:
from datetime import datetime
from datetime import timedelta
with open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\RandomFile.txt", "r") as inp:
with open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\RandomFileOutput.txt", "w") as outp:
clock = datetime.now()
for i, line in enumerate(inp.readlines()):
total = 0
line = line.strip()
#print(line)
parts = line.split(",")
for part in parts:
try:
num = int(part)
total += num
except ValueError:
total = (" ".join(parts))
break
#print(type(total))
if type(total) == int:
total_time = clock
print (clock)
else:
total_time = clock + timedelta(days = 1)
print (clock + timedelta(days = 1))
outp.write("%s: " % total_time)
outp.write("{}\n".format(total))
这是' RandomFile.txt:'
1,2
2,3
3,4
4,5
blank,blank
5,6
6,7
我得到了输出:
2016-06-29 09:21:15.168000: 3
2016-06-29 09:21:15.168000: 5
2016-06-29 09:21:15.168000: 7
2016-06-29 09:21:15.168000: 9
2016-06-30 09:21:15.168000: blank blank
2016-06-29 09:21:15.168000: 11
2016-06-29 09:21:15.168000: 13
但是,我想实现以下输出:
2016-06-29 09:21:15.168000: 3
2016-06-29 09:21:**16**.168000: 5
2016-06-29 09:21:**17**.168000: 7
2016-06-29 09:21:**18**.168000: 9
2016-06-30 09:21:**19**.168000: blank blank
2016-06-**30** 09:21:**20**.168000: 11
2016-06-**30** 09:21:**21**.168000: 13
我希望看到的更改已以粗体文字列出。
我觉得这是一个相对简单的任务,但是因为我的用户名会让你相信,我对Python很新(甚至一般编程。)我认为使用刻度可能会有所帮助,但实际上没有想法如何应用它们。
答案 0 :(得分:0)
您需要在此分支内以某种方式将时间增加一分钟:if type(total) == int:
。目前,您所做的只是为total_time
分配clock
的原始值(与您的开始时间相对应),而不是以某种方式跟踪更改时间值。
同样,在else
分支中,您total_time
等于开始时间加一天,但不要跟踪后续日期的变化。
以下是代码的略微清理版本:
from datetime import datetime
from datetime import timedelta
with open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\RandomFile.txt", "r") as inp:
with open("C:\Users\curnutte\Desktop\Assignment\Python Scripts\Python example\RandomFileOutput.txt", "w") as outp:
clock = datetime.now()
for line in inp.readlines():
total = 0
line = line.strip().split(",")
for part in parts:
try:
total += int(part)
except ValueError:
total = " ".join(parts)
break
if type(total) == int:
clock += timedelta(minutes = 1)
else:
clock += timedelta(days = 1)
outp.write("{} {}\n".format(clock, total))
请注意,我现在以不同的方式使用clock
- 我不断用更新的datetime
对象替换它,以便跟踪时间的变化循环的每次迭代。
这不是以任何方式做你想做的事情的唯一方法,但核心思想是你需要以某种方式跟踪变化的时间。