从频繁更新的文件中读取

我目前正在Linux系统上以python编写程序。目的是在发现特定字符串后读取日志文件并执行bash命令。日志文件正在被另一个程序不断写入。我的问题是:


如果我使用open()方法打开文件,我的Python文件对象是否会随着其他程序写入实际文件而更新,还是我必须按一定的时间间隔重新打开文件?


谢谢


吉姆


更新:感谢到目前为止的答案。我也许应该提到Java EE应用程序正在写入文件,因此我无法控制何时将数据写入文件。我目前有一个程序,该程序每10秒重新打开一次文件,并尝试从文件的最后读取位置读取字节。目前,它只是打印出返回的字符串。我希望不需要重新打开文件,但read命令将以某种方式可以访问Java应用程序写入文件的数据。


#!/usr/bin/python

import time


fileBytePos = 0

while True:

    inFile = open('./server.log','r')

    inFile.seek(fileBytePos)

    data = inFile.read()

    print data

    fileBytePos = inFile.tell()

    print fileBytePos

    inFile.close()

    time.sleep(10)

感谢您提供有关pyinotify和generators的技巧。我将看看这些以获得更好的解决方案。


蝴蝶不菲
浏览 785回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP