我想在不阻塞或锁定的情况下在Python中提供tail -F或类似内容的输出。我在这里找到了一些非常老的代码来执行此操作,但是我认为现在必须有更好的方法或库来执行相同的操作。有人知道吗?
理想情况下,我希望tail.getNewData()
每次需要更多数据时都可以打电话给我。
非阻塞
如果你使用的是Linux(因为Windows不支持在文件上调用select),则可以将subprocess模块与select模块一起使用。
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()
。
问题内容: 我正在使用Windows 7和python 2.7。我想将日志文件大小限制为5MB。我的应用程序启动后会写入日志文件,然后该应用程序终止。当我的应用再次启动时,它将写入同一日志文件。因此应用无法持续运行。应用程序启动,处理和终止。 我的记录代码是: 我尝试过 RotatingFileHandler, 但是没有用 那么,如何在python中实施文件大小限制? 问题答案: 丢失并使用Rot
目前我正在使用Spring Boot日志,我正在通过属性文件配置它,下面是示例日志属性 问题是日志文件备份格式是. gz格式,就像logT一样est.log.2019-06-14.0.gz 如何排除默认的拉链? 我不想在xml文件中硬连线配置并将其放在资源文件夹中。我只能将滚动appender配置xml文件,但我想在属性文件中创建日志文件路径,这样我就可以为不同的环境动态设置它。 有没有办法实现这
问题内容: 我已经读过Mysql服务器创建了一个日志文件,其中记录了所有活动-例如何时以及执行什么查询。 有人可以告诉我它在系统中的什么位置吗?我该怎么读? 基本上,我需要使用不同的输入[两个日期之间的备份]来备份数据库,所以我认为我需要在此处使用日志文件,这就是为什么要这样做… 我认为必须以某种方式保护此日志,因为可能会记录诸如用户名和密码之类的敏感信息[如果有任何查询要求];这样可以确保它安全
在log4j中,我可以这样指定文件: 但是在log4j2中,我不知道如何在一个句子中重写
我有一个powershell脚本,我用这种方式保存日志 在Python中如何使用它?
问题内容: 编辑:由于似乎没有解决方案,或者我正在做一些人都不知道的非标准操作-我将修订我的问题,并问:当python应用正在制作日志时,完成记录的最佳方法是什么?很多系统调用? 我的应用程序有两种模式。在交互模式下,我希望所有输出都转到屏幕以及日志文件中,包括所有系统调用的输出。在守护程序模式下,所有输出进入日志。守护程序模式使用时效果很好。我找不到在不修改每个系统调用的情况下以交互方式将所有输