为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何在Python中跟踪日志文件?

请问如何在Python中跟踪日志文件?

守候你守候我 2019-10-21 16:12:22
如何在Python中跟踪日志文件?我希望在Python中可以在没有阻塞或锁定的情况下使用tail-F或类似的输出。我找到了一些很老的代码这里,但我想现在肯定有更好的方法或图书馆来做同样的事情了。有人听说过吗?理想情况下,我会有tail.getNewData()每次我想要更多数据的时候我都可以打电话给你。
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超3个赞

非阻塞

如果您在Linux上(因为windows不支持调用SELECT文件),您可以使用子进程模块和SELECT模块。

import timeimport subprocessimport 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()将被有用的代码所取代。

阻塞

您可以使用子流程模块,而无需额外的SELECT模块调用。

import subprocess
f = subprocess.Popen(['tail','-F',filename],\
        stdout=subprocess.PIPE,stderr=subprocess.PIPE)while True:
    line = f.stdout.readline()
    print line

这也会在添加新行时打印出新行,但是它将阻塞直到尾程序关闭,可能使用f.kill().



查看完整回答
反对 回复 2019-10-22
  • 3 回答
  • 0 关注
  • 270 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信