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()
.Trysubprocess.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
>>>