【发布时间】:2014-02-12 16:35:50
【问题描述】:
我有下面的代码,它等待日志文件出现,它被外部程序保存在那里,当日志文件出现时,我打开它,同时它仍在被写入,并打印内容,作为日志文件正在由外部程序更新我想打印出任何写入它的新行。目前我清除打印出来并重新打印整个文本,我想避免这种情况,我只想打印新行。另一个需要改进的是等待文件出现,而不是仅仅暂停 python 脚本。
a=0
while a <= 10:
if os.path.isfile(logPath):
infile = file(logPath)
break
a=a+1
time.sleep(1)
fileSize1 = 0
while True:
wx.Yield()
fileSize = os.path.getsize(logPath)
if fileSize > fileSize1:
lines = infile.readlines()
log.Clear()
log.Refresh()
for line in lines:
print line.rstrip()
if "DBG-X: Returning 1" in line:
break
if "DBG-X: Returning 0" in line:
break
fileSize1 = fileSize
infile.seek(0)
【问题讨论】:
-
保留一个
LastLinePrinted变量并检查文件中的行数是否更大? -
听起来不错,如何检查行数是否更大?
-
看看这个答案...stackoverflow.com/a/850962/156755。它描述了计算文件中行数的不同方式。
-
那么我如何只打印出新行呢?
-
@speedyrazor
print lines[latestLineIndex:]