如何在Python中异步获取文件的差异
问题描述:
我正在编写一个显示日志文件的tail
的Web应用程序组件。如何在Python中异步获取文件的差异
我目前的尝试是使用网络套接字发送文件中的更改,确保我有少于n
行,并将其粘贴到文本区域中。
我目前的问题是如何在Python中为日志文件生成'on change'
事件。
我可以想象用shutil
创建副本some_copy.log
检测some_log.log
变化,检测最后一次的文件是用os.path.getmtime
改变,采取diff和发射的变化。这种效率低下。
有没有人有建议使用Python异步检测文件的变化?我正在使用Python 2.7.6。
答
我会为未来的读者添加这个,但如果其他人想要提出其他想法,我会很乐意接受他们。
我发现了一个名为tailer的包,它是unix tail程序的一个包装。粗略地在pythonic伪代码中,我打算在单独的线程中执行以下操作:
for line in tailer.follow(open('some_log.log')):
emit(line)
我想这个问题已被问到:[detect-file-change-without-polling](http://stackoverflow.com/questions/5738442/detect-file-change-without-polling) – Benjamin
@Benjamin这些工具大部分都是目录观察者,而不是文件观察者。此外,他们中的大多数已被放弃。 – erip