操作Python:datetime.now()输出以显示每条线的递增时间值

时间:2016-06-29 16:43:28

标签: python python-2.7 datetime output

最初,我接受了一项练习,其中我必须编写' 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很新(甚至一般编程。)我认为使用刻度可能会有所帮助,但实际上没有想法如何应用它们。

1 个答案:

答案 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对象替换它,以便跟踪时间的变化循环的每次迭代。

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