我打開一個文本文件,該文件一旦被創建,就會不斷被寫入,然後將其打印到任何新行的控制檯中,因爲我不想重新打印整個文本文件每次。我正在檢查文件是否增大,如果是,則打印下一行。這主要是可行的,但偶爾它會對下一個新行感到困惑,新行出現幾行,與舊行混在一起。 有沒有更好的方法來做到這一點,下面是我目前的代碼。要創建打開文本文件,僅在python中打印新行
infile = "Null"
while not os.path.exists(self.logPath):
time.sleep(.1)
if os.path.isfile(self.logPath):
infile = codecs.open(self.logPath, encoding='utf8')
else:
raise ValueError("%s isn't a file!" % file_path)
lastSize = 0
lastLineIndex = 0
while True:
wx.Yield()
fileSize = os.path.getsize(self.logPath)
if fileSize > lastSize:
lines = infile.readlines()
newLines = 0
for line in lines[lastLineIndex:]:
newLines += 1
self.running_log.WriteText(line)
lastLineIndex += newLines
if "DBG-X: Returning 1" in line:
self.subject = "FAILED! - "
self.sendEmail(self)
break
if "DBG-X: Returning 0" in line:
self.subject = "PASSED! - "
self.sendEmail(self)
break
fileSize1 = fileSize
infile.flush()
infile.seek(0)
infile.close()
而且我的應用程序凍結而等待文本文件,因爲它需要幾秒鐘出現,這也不是很大。
乾杯。
您可能只想使用linux'tail -f fname'命令 - 如果您在Windows上使用cygwin。 –
相關:[我怎樣才能在Python中記錄日誌文件?](http://stackoverflow.com/q/12523044/4279) – jfs