subprocess.Popen进程stdout返回空?

时间:2016-10-13 17:44:53

标签: python python-3.x subprocess

我有这个python代码

input()
print('spam')

保存为ex1.py

交互式shell中的

>>>from subprocess import Popen ,PIPE
>>>a=Popen(['python.exe','ex1.py'],stdout=PIPE,stdin=PIPE)

>>> a.communicate()

(b'', None)

>>>

为什么它不打印spam

3 个答案:

答案 0 :(得分:3)

输入需要整行,但输入为空。因此,只有一个例外写入stderr而没有写入stdout。至少提供换行符作为输入:

>>> a = Popen(['python3', 'ex1.py'], stdout=PIPE, stdin=PIPE)
>>> a.communicate(b'\n')
(b'spam\n', None)
>>> 

答案 1 :(得分:0)

您正在寻找的是subprocess.check_output

答案 2 :(得分:0)

您缺少tar管道:

stderr