Python subprocess.call在没有shell = True的情况下不起作用

时间:2015-06-18 09:46:03

标签: python shell

我使用Python在内部调用cscope。为此,我使用subprocess.call

问题在于没有shell=True

它无法正常工作

以下代码按预期工作:

import subprocess
subprocess.call("cscope -d -L0'temp'", shell=True)

但以下情况并非如此,它返回0状态代码,但没有输出

import subprocess
subprocess.call(["cscope", "-d", "-L0'temp'"])

关于上述原因发生的任何想法?

1 个答案:

答案 0 :(得分:3)

不要引用这些参数,当shell = False时,args会直接传递给进程而不使用shell:

subprocess.call(["cscope", "-d", "-L0","temp"])

你应该使用check_call:

from subprocess import check_call

check_call(["cscope", "-d", "-L0", "temp"])