子进程调用参数作为变量python

时间:2013-06-20 18:35:38

标签: python subprocess

您好我是Python的新手,我正在尝试使用subprocess.call从另一个Python脚本调用子流程。但我的论点是变量名。那么,我应该使用subprocess.call还是subprocess.popen?

我想从另一个python脚本执行以下命令:

python npp.python -i fname -o fname+"out" -l fname+"log" -e excplist -i ignorelist 

所以,我应该做什么

subprocess.Popen(['python', 'npp.python', '-i', fname , 'o', fname+"out", '-l', fname+"log", '-e', excplist,'-i',ignrlist]).communicate()

我无法通过这样做来调用其他程序。对我做错了什么建议?

1 个答案:

答案 0 :(得分:0)

PJust供参考。 执行此类操作的一种非常简单的方法是先预先定义命令,然后将其转换为参数列表。

command = "python npp.python -i {file} -o {file}.out -l {file}.log -e {excep} -i {ignore}".format(file=pipe.quote(fname), excep=exceptlist, ignore=ignorelist)

subprocess.call(shlex.split(command)) # shlex.split is safer for shell commands than the usual split
# or popen if the return code isn't needed
subprocess.Popen(shlex.split(command))

这样,以列表形式编写命令时更难犯错误。