【发布时间】:2018-09-15 00:33:31
【问题描述】:
我目前正在 Linux 系统上用 python 编写程序。目标是读取日志文件并在找到特定字符串时执行 bash 命令。日志文件不断被另一个程序写入。
我的问题:如果我使用 open() 方法打开文件,我的 Python 文件对象会随着其他程序写入实际文件而更新,还是我必须重新打开文件每隔一段时间?
更新:感谢到目前为止的回答。我也许应该提到该文件是由 Java EE 应用程序写入的,因此我无法控制何时将数据写入其中。我目前有一个程序,它每 10 秒重新打开一次文件,并尝试从文件中上次读取的字节位置读取。目前它只是打印出返回的字符串。我希望文件不需要重新打开,但读取命令会以某种方式访问 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 和生成器的提示。我将看看这些以获得更好的解决方案。
【问题讨论】:
标签: python file-io generator fopen