Python 2.7 获取命令响应的子进程会产生问题

Python 2.7 获取命令响应的子进程会产生问题,python-2.7,subprocess,Python 2.7,Subprocess,已使用子流程执行了上述命令,但执行后提示未出现,需要输入才能返回提示。有人能帮上忙吗?您确实会得到一个提示,您看到的是子流程输出到stderr,它在上面写 首先输入命令 >>>import subprocess >>>pipe= subprocess.Popen(["ls",'/etc/uu'],stdout=subprocess.PIPE) >>>ls: cannot access /etc/uu: No such file

已使用子流程执行了上述命令,但执行后提示未出现,需要输入才能返回提示。有人能帮上忙吗?

您确实会得到一个提示,您看到的是子流程输出到
stderr
,它在上面写

首先输入命令

>>>import subprocess        
>>>pipe= subprocess.Popen(["ls",'/etc/uu'],stdout=subprocess.PIPE)
>>>ls: cannot access /etc/uu: No such file or directory

>>>
按enter键后,会出现提示

>>>import subprocess        
>>>pipe= subprocess.Popen(["ls",'/etc/uu'],stdout=subprocess.PIPE)
然后,命令的stderr将
ls:无法访问/etc/uu:没有这样的文件或目录\n
打印到离开的控制台

>>>
此时,提示仍将显示输入。按return of course可正常输出
\n>>


如果您想用
stderr=subprocess停止在提示符上显示,可以将
stderr
重定向到
stdout
。在调用
Popen
时,stdout
发生的情况是
>
已被删除,就像键入
print5+5
一样,结果后面不会有
>

要证明“提示”仍然存在:

>>>ls: cannot access /etc/uu: No such file or directory
 

“提示不来”是什么意思?顺便说一句,如果您真正的任务是“ls”一些文件,最好直接使用Python(例如,
os.stat()
.Try
subprocess.Popen([“ls”、'/etc/uu'],stdout=subprocess.PIPE,shell=False)
。它打开了一个shell进程,由于出错,它一直在那里运行。因此,如果这是您想要的,那么
shell=False
将返回提示。我的意思是,在上面的代码中,当我在第2行后按enter键时,我没有得到>>>。要得到>>>,我需要提供enter键以获得
>>> import subprocess
>>> pipe = subprocess.Popen(['ls', '/foo/bar/zoo'], stdout=subprocess.PIPE)
>>> ls: cannot access /foo/bar/zoo: No such file or directory
print 5+5 # see how this works?
10
>>>