我有一个脚本调用另一个Python脚本subprocess.Popen
。但是因为我有参数存储在变量中
servers[server]['address']
servers[server]['port']
servers[server]['pass']
我无法执行该命令
p = subprocess.Popen(
["python mytool.py -a ", servers[server]['address'], "-x", servers[server]['port'], "-p", servers[server]['pass'], "some additional command"],
shell=True,
stdout=subprocess.PIPE
)
Drop shell=True
. 论据Popen()在 Unix 上的处理方式不同,如果shell=True:
import sys
from subprocess import Popen, PIPE
# populate list of arguments
args = ["mytool.py"]
for opt, optname in zip("-a -x -p".split(), "address port pass".split()):
args.extend([opt, str(servers[server][optname])])
args.extend("some additional command".split())
# run script
p = Popen([sys.executable or 'python'] + args, stdout=PIPE)
# use p.stdout here...
p.stdout.close()
p.wait()
请注意,通过shell=True
对于具有外部输入的命令存在安全隐患,如警告所述在文档中.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)