我目前正在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的技巧。我将看看这些以获得更好的解决方案。