Python3子进程模块:将空变量作为标志传递,是否可能?

时间:2013-12-08 02:39:30

标签: python python-3.x subprocess

我正在尝试使用subprocess.call()在python3中执行命令行程序。我可以让它工作正常,以下示例执行没有问题:

subprocess.call(['add_phenotype.py', '-t', threads, '-s'])

但是,我想解析一个文件,然后根据我发现的内容,运行带有不同标志的命令。我无法弄清楚如何做到这一点。

例如:

if zeroed_out_file:
    args = '-z'
else:
    args = ''

subprocess.call(['add_phenotype.py', '-t', threads, '-s', args])
如果zeroed_out_file为FALSE,则

失败。 add_phenotype.py脚本立即退出,声称它无法识别参数。

1 个答案:

答案 0 :(得分:4)

第一个参数采用一个列表;只是动态构建该列表:

args = ['add_phenotype.py', '-t', threads, '-s']
if zeroed_out_file:
    args.append('-z')

subprocess.call(args)

添加额外的命令行开关只是向args附加更多值的问题。