subprocess.call要求所有参数用逗号分隔

时间:2010-11-03 20:13:38

标签: python

我曾经能够做一个subprocess.call(["command","-option value -option value"])并且可以使用命令进行更改以正确处理引号中的内容,但现在我必须将我的子进程调用命令更改为如下所示:

subprocess.call(["command","-option","value","-option","value"])

我有什么办法可以让它在python中以另一种方式工作吗?

os.system("command -option value -option value")的工作方式与以前相同。

2 个答案:

答案 0 :(得分:37)

如果可以,请避免使用shell=True - 这是security risk。为此,shlex.split就足够了:

import subprocess
import shlex
subprocess.call(shlex.split("command -option value -option value"))

答案 1 :(得分:3)

您需要指定shell=True以获取subprocess.call来解释字符串。

请参阅subprocess.Popen constructor documentation中的注释(subprocess.call方法采用与subprocess.Popen构造函数相同的参数)。