我用subprocess
的check_output()
函数两种方式,发现结果不一样,我不知道为什么
第一种方式:
from subprocess import check_output as qc
output = qc(['exit', '1'], shell=True)
第二种方式:
from subprocess import check_output as qc
output = qc(['exit 1'], shell=True)
错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/work/cloud/python2.7_64/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['exit 1']' returned non-zero exit status 1
第二条路是对的,但第一条路为什么不对
引用subprocess docs:
在每种情况下,您实际要做的是:
传递一系列参数:
['exit', '1']
。序列相当于shell命令exit 1
。参数之间用空格隔开,并且没有引号来改变分隔过程传递一系列参数:
['exit 1']
,长度为1。这相当于shell命令"exit 1"
。第一个(也是唯一一个)参数中有空格,这类似于将其括在引号中正如您可以验证的,这两个命令的退出代码是不同的,因此您的Python脚本输出是不同的
相关问题 更多 >
编程相关推荐