【发布时间】:2016-08-20 22:51:01
【问题描述】:
使用 subprocess 模块 (Python 2.7),我正在运行一个命令并尝试在其运行时处理其输出。
我有如下代码:
process = subprocess.Popen(
['udevadm', 'monitor', '--subsystem=usb', '--property'],
stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, ''):
print(line)
但是,即使我在 print 语句后添加 sys.stdout.flush(),输出也只会在我 Ctrl+C 后打印。
为什么会发生这种情况,如何实时流式传输此过程的输出?
值得注意的是,这个udevadm monitor 命令并不打算终止,所以我不能简单地等待进程终止并立即处理其输出。
我找到了live output from subprocess command,但接受的答案中的方法并没有解决我的问题。
【问题讨论】:
标签: python subprocess