Python 中的尾部日志文件
问:是否有一种非阻塞或锁定的方式来在 Python 中尾部日志文件,类似于命令尾-F?虽然有较旧的方法,但有更好的解决方案或库吗?
A:非阻塞:
在 Linux 上,利用子进程和选择模块提供了非阻塞解决方案:
import time import subprocess import select f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) p = select.poll() p.register(f.stdout) while True: if p.poll(1): print f.stdout.readline() time.sleep(1)
此解决方案轮询输出管道以获取新数据并立即显示它。您可以使用自定义功能替换 time.sleep(1) 和 print f.stdout.readline()。
阻塞:
对于阻塞方法,您可以使用没有附加模块的子进程模块:
import subprocess f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: line = f.stdout.readline() print line
此方法也会在新行出现时打印它们,但它将停止执行,直到尾进程终止(例如,通过 f.kill())。
以上是如何在Python中不阻塞地跟踪日志文件?的详细内容。更多信息请关注PHP中文网其他相关文章!