一度作成されたテキストファイルは常に書き込まれており、毎回テキストファイル全体を再印刷したくないため、新しい行をコンソールに出力しています。ファイルのサイズが大きくなるかどうかを確認しています。そうであれば、次の新しい行を印刷するだけです。これはほとんど機能していますが、次の新しい行について少し混乱することがあり、新しい行が数行上に表示され、古い行と混ざって表示されます。これを行うためのより良い方法はありますか、以下は私の現在のコードです。
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()
また、テキスト ファイルが作成されるのを待っている間に、表示されるまでに数秒かかるため、アプリケーションがフリーズします。
乾杯。