我想要执行 Test_Pipe.py 的输出,我在 Linux 上尝试了以下代码,但没有成功。
Test_Pipe.py
import time
while True :
print "Someting ..."
time.sleep(.1)
Caller.py
import subprocess as subp
import time
proc = subp.Popen(["python", "Test_Pipe.py"], stdout=subp.PIPE, stdin=subp.PIPE)
while True :
data = proc.stdout.readline() #block / wait
print data
time.sleep(.1)
proc.stdout.readline()
行被阻塞,所以没有数据打印出来。
最佳答案
您显然可以使用 subprocess.communicate 但我认为您正在寻找实时输入和输出。
readline 被阻止,因为该进程可能正在等待您的输入。您可以逐个字符地阅读来克服这个问题,如下所示:
import subprocess
import sys
process = subprocess.Popen(
cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
while True:
out = process.stdout.read(1)
if out == '' and process.poll() != None:
break
if out != '':
sys.stdout.write(out)
sys.stdout.flush()
关于python - 如何从 subprocess.Popen() 获取输出。 proc.stdout.readline() block ,没有数据打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388753/