Get only new lines from file
目前我有这段代码,但它读取所有行,然后用while-true语句查看文件:
1 2 3 4 5 6 7 | 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上,它工作正常。也可以很好的解决这个问题。
希望有人和类似的人一起工作。
1 2 3 | with open('/var/log/logfile.log','r') as f: for line in f: print line |
最初可以完全读取文件,然后关闭它,并在上面保留一个更改监视器,这个监视器在下面使用轮询实现。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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) |
号
但是您也可以使用类似于中描述的工具:检测文件更改而不进行轮询
试试这个,
1 2 3 4 5 | readfile = open('/var/log/logfile.log','r') if readfile: for lines in readfile: print lines readfile.close() |