我目前正在一个 Linux 系统上用 python 编写一个程序。目标是读取日志文件,并在查找特定字符串时执行 bash 命令。日志文件不断被另一个程序写入。
我的问题 : 如果我使用 open()
方法打开文件,我的 Python 文件对象将随着实际文件被另一个程序写入而更新,还是必须每隔一段时间重新打开文件?
更新 : 谢谢你到目前为止的回答。我可能应该提到,该文件是由 JavaEE 应用程序写入的,因此我无法控制何时将数据写入该文件。我目前有一个程序,重新打开文件每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 和生成器的提示。我将看看这些更好的解决方案。