我正在打开一个文本文件,该文件一旦创建就会不断被写入,然后将任何新行打印到控制台,因为我不想每次都重新打印整个文本文件。我正在检查文件是否变大,如果是,只需打印下一个新行。这主要是有效的,但偶尔它会对下一个新行有点困惑,新行出现在几行上,与旧行混在一起。有没有更好的方法来做到这一点,下面是我当前的代码。
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()
此外,我的应用程序在等待创建文本文件时冻结,因为它需要几秒钟才能出现,这不是很好。
干杯。