操纵 Python: datetime.now() 输出以显示每行的递增时间值
Manipulating Python: datetime.now() output to display incrementing time values per individual line
最初我得到了一个练习,我必须将 'RandomFile.txt' 写成七行,每行列出给定整数和当前时间的总和。完成此任务后,我被分配显示每行一秒的增量(即第一行 = 5 秒,第二行 = 6 秒,第三行 = 7 秒,等等)并增加与 'blank blank.'
使用以下代码:
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(甚至是一般的编程)还很陌生。我想也许使用 ticks 会帮助,但真的不知道如何应用它们。
您需要在该分支内以某种方式将时间增加一分钟: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
对象替换它,以便它在每次迭代时及时跟踪变化循环。
无论如何,这不是做你想做的唯一方法,但核心思想是你需要以某种方式跟踪变化的时间。
最初我得到了一个练习,我必须将 'RandomFile.txt' 写成七行,每行列出给定整数和当前时间的总和。完成此任务后,我被分配显示每行一秒的增量(即第一行 = 5 秒,第二行 = 6 秒,第三行 = 7 秒,等等)并增加与 'blank blank.'
使用以下代码:
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(甚至是一般的编程)还很陌生。我想也许使用 ticks 会帮助,但真的不知道如何应用它们。
您需要在该分支内以某种方式将时间增加一分钟: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
对象替换它,以便它在每次迭代时及时跟踪变化循环。
无论如何,这不是做你想做的唯一方法,但核心思想是你需要以某种方式跟踪变化的时间。