Python 当os.system更新了systemctl时,请执行某些操作
我的代码目前看起来是这样的:Python 当os.system更新了systemctl时,请执行某些操作,python,Python,我的代码目前看起来是这样的: 导入操作系统 操作系统(“journalctl-f”) 这将监视日志TLlive,每当日志TL更新时,它都会发布在标准输出中 我很好奇更新后我会怎么做,例如: 导入操作系统 操作系统(“journalctl-f”) 如果有新的东西: 做点什么(文本) 不知道我可以用什么来做这件事,提前谢谢 您可以使用Popen打开进程,并通过使用stdout中的while with readlines使其保持活动状态: import subprocess comm
导入操作系统
操作系统(“journalctl-f”)
这将监视日志TLlive,每当日志TL更新时,它都会发布在标准输出中
我很好奇更新后我会怎么做,例如:
导入操作系统
操作系统(“journalctl-f”)
如果有新的东西:
做点什么(文本)
不知道我可以用什么来做这件事,提前谢谢 您可以使用Popen打开进程,并通过使用stdout中的while with readlines使其保持活动状态:
import subprocess
command = 'journalctl -f'
p = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=1, shell=True)
while True:
if 'something' in p.stdout.readline():
doSomething
os.system()
是完全错误的工具。您需要检查一些良好的起点。稍微好一点/快一点:将p.stdout:中的行的“无限循环加显式读取行调用”替换为,如果行中的“某物”
,则测试变为。允许您进一步检查行
,迭代器协议几乎总是比重复的方法调用更有效。如果可能的话,我还建议在没有shell的情况下运行该命令,使command=['journalctl','-f']
并删除shell=True
,因为涉及shell可能会掩盖错误,引入不必要的缓冲层等。