等待写入文本文件,逐行读取更改并打印

2024-10-01 15:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它等待一个日志文件出现,它被一个外部程序保存在那里,当日志文件出现时,我打开它,当它仍然被写入,并打印内容,因为日志文件正在被外部程序更新,我想打印出写入它的任何新行。目前我清除打印输出和重新打印整个文本,我想避免,我只想打印新行。另一个需要改进的地方是等待文件出现,而不仅仅是暂停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)

Tags: 文件pathin程序logifosline
1条回答
网友
1楼 · 发布于 2024-10-01 15:33:59

试试这样的。。。在

lastSize = 0
lastLineIndex = 0
while True:
    wx.Yield()
    fileSize = os.path.getsize(logPath)
    if fileSize > lastSize:
        lines = infile.readlines()
        newLines = 0
        for line in lines[lastLineIndex:]:
            newLines += 1
            print line.rstrip()
        lastLineIndex += newLines

        if "DBG-X: Returning 1" in line:
            break
        if "DBG-X: Returning 0" in line:
            break
    fileSize1 = fileSize
    infile.seek(0)

关键是

^{pr2}$

我们跳过我们已经看过的台词。您可能可以跳过newLines变量,只做lastLineIndex += 1,但我不喜欢在for循环中更改lastLineIndex(我养成了这种习惯,以避免在其他语言中出现问题)

相关问题 更多 >

    热门问题