【发布时间】:2010-10-01 09:06:39
【问题描述】:
我在使用 subprocess 模块重定向另一个程序的 stdio 时遇到问题。仅从标准输出读取会导致挂起,并且 Popen.communicate() 可以工作,但它会在读取/写入后关闭管道。最简单的实现方法是什么?
我在 windows 上玩这个:
import subprocess
proc = subprocess.Popen('python -c "while True: print \'Hi %s!\' % raw_input()"',
shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
while True:
proc.stdin.write('world\n')
proc_read = proc.stdout.readline()
if proc_read:
print proc_read
【问题讨论】:
-
-u标志将为 Python 子进程解决它。还有pexpect,pty模块和unbuffer,stdbuf,script实用程序可以帮助解决块缓冲问题。
标签: python subprocess