基本上,我正在寻找一种方法来读取用Python不断写入的文件,例如日志文件。
我发现了这个:https://stackoverflow.com/a/5420116/10638608
答案是:
import time
def follow(thefile):
thefile.seek(0,2)
while True:
line = thefile.readline()
if not line:
time.sleep(0.1)
continue
yield line
if __name__ == '__main__':
logfile = open("run/foo/access-log","r")
loglines = follow(logfile)
for line in loglines:
print line,
我开始问自己为什么会起作用。我的意思是,从理论上讲,找到终点,等到一行显示出来,阅读并打印它,这很简单,对吧?但是,为什么有两个进程在同一个文件上进行操作,一个进程对其进行写入(然后关闭),为什么一个进程从该文件进行读取,而thefile
句柄没有以任何方式被破坏并且能够读取下一行的原因,从文件?这不是某个关键部分吗?