2016-12-06 29 views
0

我正在嘗試創建一個記錄while循環的每個迭代的輸出的日誌文件,但是我似乎只能捕獲倒數第二行並在其下創建一個空白的新行。Python - 你如何在一個文本文件中寫一個新的行,用於一個while循環的迭代?

我有這樣的代碼:

from glob import glob 
import task_prep 
import time 
import datetime 

path = glob('F:\\Transcoder\\staging\\prep\\*.xml') 


while len(path) >= 0: 
    log = open('log_file.txt', 'w') 
    if int(len(path)): 
     data = (str(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")) + ': files') 
     print(data) 
     log.write(data + '\n') 
     task_prep.task_prep() 
     path = glob('F:\\Transcoder\\staging\\prep\\*.xml') 
     time.sleep(3) 

    else: 
     data = (str(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")) + ': no files') 
     print(data) 
     log.write(data + '\n') 
     path = glob('F:\\Transcoder\\staging\\prep\\*.xml') 
     time.sleep(3) 

這是隻覆蓋多數民衆贊成被在第一行寫的一切,但是這是會打印:

2016-12-06 10:25:56: no files 
2016-12-06 10:25:59: no files 
2016-12-06 10:26:02: no files 
2016-12-06 10:26:05: no files 
2016-12-06 10:26:08: no files 
2016-12-06 10:26:11: no files 
2016-12-06 10:26:14: no files 
2016-12-06 10:26:17: no files 
2016-12-06 10:26:20: no files 
2016-12-06 10:26:23: no files 
2016-12-06 10:26:26: no files 

Process finished with exit code 1 

這是被寫在文本文件:

2016-12-06 10:26:23: no files 

第1行上的字符串和下面的新行。

我在做什麼錯?

+1

如果你正在打印日誌,你想打開''a'',所以它附加輸出。 – Iluvatar

回答

3

您正在文件的位置0的每個循環中打開文件,因此會覆蓋以前的結果。

你要打開你的文件while塊之前在內存中保留先前的位置:

from glob import glob 
import task_prep 
import time 
import datetime 

path = glob('F:\\Transcoder\\staging\\prep\\*.xml') 

with open('log_file.txt', 'w') as log: 
    while len(path) >= 0: 
     if int(len(path)): 
      data = (str(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")) + ': files') 
      log.write(data + '\n') 
      task_prep.task_prep() 
      path = glob('F:\\Transcoder\\staging\\prep\\*.xml') 
      time.sleep(3) 

     else: 
      data = (str(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S")) + ': no files') 
      log.write(data + '\n') 
      path = glob('F:\\Transcoder\\staging\\prep\\*.xml') 
      time.sleep(3) 

獎金:在這裏,我用with這使得使用open實現上下文管理的。該文件將在with區塊結束後自動關閉。

您也可以使用'a'模式(用於追加),但您仍然會打開文件很多次,效率非常低。

+0

不幸的是,在使用這種方法時似乎沒有任何東西被寫入,我只是得到一個空的文本文件。 – Lewis909

+0

由於我已經獲得了更多的Python經驗,並且在站立的情況下,我已經能夠使這個概念發揮作用。謝謝! – Lewis909

相關問題