目前我有这段代码,但它会读取所有行,然后使用while True语句观察文件:
with open('/var/log/logfile.log') as f:
while True:
line = f.readline()
if not line:
time.sleep(1)
else:
print(line)
我实际上只需要在打开文件后检测到的行之后出现新行 - 任何可以帮助我的人?也许用更好的方式观看它,而不是用while语句?
另一个问题是,在Linux机器上,脚本实际上是锁定文件,因此在我再次关闭脚本之前无法写入该文件。在OS X上它工作正常。也可以尝试解决这个问题。
希望有人在那里工作过类似的东西。
答案 0 :(得分:1)
试试这个,
readfile = open('/var/log/logfile.log','r')
if readfile:
for lines in readfile:
print lines
readfile.close()
答案 1 :(得分:1)
您最初可以完全读取该文件,然后将其关闭,并在其上保留一个更改监视器,此监视器将在下面使用轮询实现。
import time
filePath = '/var/log/logfile.log'
lastLine = None
with open(filePath,'r') as f:
while True:
line = f.readline()
if not line:
break
print(line)
lastLine = line
while True:
with open(filePath,'r') as f:
lines = f.readlines()
if lines[-1] != lastLine:
lastLine = lines[-1]
print(lines[-1])
time.sleep(1)
但您也可以使用以下所述的工具:Detect File Change Without Polling
答案 2 :(得分:1)
with open('/var/log/logfile.log','r') as f:
for line in f:
print line