2016-06-29 17 views
0

最初,我進行了一個練習,我必須將「RandomFile.txt」寫成7行,每行列出整數求和給出和當前時間。完成這個任務後,我被分配顯示每行增加1秒(即第一行= 5秒,第二行= 6秒,第三行= 7秒等),並且還增加了從'blank空白。'操作Python:datetime.now()輸出以顯示每行的遞增時間值

使用下面的代碼:

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

您需要在此分支內以某種方式增加一分鐘時間:if type(total) == int:。目前,您所做的只是將原始值total_time分配給clock(對應於您的開始時間)的原始值,而不是以某種方式跟蹤更改時間值。

同樣,在該else分支中,您將使total_time等於開始時間加上一天,但不會跟蹤隨後幾天的該更改。

這裏是你的代碼稍微清理後的版本:那我現在以不同的方式使用clock

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)) 

聲明 - 我不斷用更新datetime對象,因此替換它通過循環的每次迭代來跟蹤時間的變化。

這不是以任何方式做你想做的事的唯一方法,但核心思想是你需要以某種方式跟蹤變化的時間。

+0

您提供的代碼在運行時會給我錯誤。但是,我按照您的建議使用了新的時鐘格式,這給了我想要的結果!我一直在爲此工作了幾天,發現這種簡單的改變就是解決問題的困惑。謝謝您的意見! – NewAtThis

+0

@NewAtThis:哦,哎呀,對不起 - 我沒有真正徹底測試我的代碼。我希望它不需要太多的努力來調試它! – Michael0x2a

+0

完全沒有!如果沒有你的協助,我的工作量會大大減少 – NewAtThis