从列表生成subprocess.call参数

时间:2012-07-17 05:33:41

标签: python

我正在使用子进程模块来执行带参数的命令行软件,但是在提供参数列表时我遇到了一些麻烦。

这是我正在做的事情:

subprocess.call([rv,"[",rv_args[0],rv_args[1],"]",])

这很好用, len(rv_args)== 2 ,现在我想生成这个:

if len(rv_args) == 4 :
    subprocess.call([rv,"[",rv_args[0],rv_args[1],"]","[",rv_args[2],rv_args[3],"]",])

然后

if len(rv_args) == 6 :
    return subprocess.call([rv,"[",rv_args[0],rv_args[1],"]","[",rv_args[2],rv_args[3],"]","[",rv_args[4],rv_args[5],"]"])
等等..等等。

当然我不想硬编码,但是动态生成它,你最好的方式是什么?

欢呼声,

1 个答案:

答案 0 :(得分:1)

这是一种方式:

rv = "command"
rv_args = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


def get_arguments(rv, rv_args):
    arguments = [rv]
    for i in xrange(0, len(rv_args), 2):
        arguments += ["["] + rv_args[i:i+2] + ["]"]

    return arguments

print get_arguments(rv, rv_args)

返回:

['command', '[', 1, 2, ']', '[', 3, 4, ']', '[', 5, 6, ']', '[', 7, 8, ']', '[', 9, 10, ']']