关于python:从文件中只获取新行

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()