您好我是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()
我无法通过这样做来调用其他程序。对我做错了什么建议?
答案 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))
这样,以列表形式编写命令时更难犯错误。