操纵 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 对象替换它,以便它在每次迭代时及时跟踪变化循环。

无论如何,这不是做你想做的唯一方法,但核心思想是你需要以某种方式跟踪变化的时间。