我希望能在Python脚本中运行系统进程,截取输出并实时逐行修改。以下是我最好的尝试,它会等待进程完成后再打印:
脚本
#!/usr/bin/env python
import subprocess
cmd = "waitsome.py"
proc = subprocess.Popen(cmd, shell=True, bufsize=256, stdout=subprocess.PIPE)
for line in proc.stdout:
print ">>> " + line.rstrip()
脚本
waitsome.py
每 0.5 秒打印一行内容:#!/usr/bin/env python
import time
from sys import stdout
print "Starting"
for i in range(0,20):
time.sleep(0.5)
print "Hello, iteration", i
stdout.flush()
有没有一种简单的解决方案可以让subprocess
允许实时迭代输出?我是否必须使用线程?
从前,我用Perl编写脚本,这很容易:
open(CMD, "waitsome.py |");
while (<CMD>) {
print ">>> $_";
}
close(CMD);