使用 subprocess 模块 (Python 2.7),我正在运行命令并尝试在运行时处理其输出。
我有如下代码:
process = subprocess.Popen(
['udevadm', 'monitor', '--subsystem=usb', '--property'],
stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, ''):
print(line)
但是,即使我添加,输出也只会在我按 Ctrl+C 后打印sys.stdout.flush()
在打印语句之后。
为什么会发生这种情况?我如何实时传输此过程的输出?
值得注意的是,这udevadm monitor
命令并不打算终止,因此我不能简单地等待进程终止并立即处理其输出。
I found 子进程命令的实时输出但接受的答案中的方法并没有解决我的问题。
你可以使用unbuffer :
process = subprocess.Popen(
["unbuffer", 'udevadm', 'monitor', '--subsystem=usb', '--property'],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(process.stdout.readline, ''):
print(line)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)