我有一个小的python脚本,它来自stdin。从这个意义上讲,输入是由尾部-F生成的,然后通过管道输出到脚本。我想避免使用tail -F并直接从python中读取文件。根据{{3}}的配方,这很好。
所以,最后我有一个小功能如下:
def read_file(thefile, follow_file = True, wait_time = 0.1, seek_end=False):
if seek_end:
thefile.seek(0, 2)
while True:
line = thefile.readline()
if not line:
if follow_file:
time.sleep(wait_time)
continue
else:
break
yield line
这比tail -f工作得很好。但原因是之前使用tail -F,有时输入文件(它是指向真实文件的软链接)可能会更改并指向新文件。在这种情况下,前面的代码不会引发任何异常,我也没有从文件对象中找到任何允许我发现这种情况的属性。
我有什么遗漏或者我需要使用pyinotify来做这件事吗?
提前致谢