从文件中获取新行
目前我有一段代码,但它会读取所有行,然后用一个一直循环的方式来监视文件:
with open('/var/log/logfile.log') as f:
while True:
line = f.readline()
if not line:
time.sleep(1)
else:
print(line)
其实我只需要在打开文件后,获取那些新添加的行——有没有人能帮我解决这个问题?也许有比用一直循环的方式更好的监视方法?
还有一个问题是,在Linux系统上,这个脚本会锁住文件,导致在我关闭脚本之前无法写入文件。而在OS X上就没这个问题。如果能有个解决办法就更好了。
希望有谁能分享一下类似的经验。
3 个回答
0
试试这个,
readfile = open('/var/log/logfile.log','r')
if readfile:
for lines in readfile:
print lines
readfile.close()
2
with open('/var/log/logfile.log','r') as f:
for line in f:
print line
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。
5
你可以先把文件全部读一遍,然后关闭它,再对这个文件进行监控,这个监控的方式是通过定期检查来实现的,下面的代码就是这样做的。
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)
不过,你也可以使用一些工具,像这里提到的:不通过轮询检测文件变化