场景
在我的python脚本中,我需要将一个可执行文件作为一个子进程运行,该子进程包含可执行文件所期望的x个命令行参数。在
示例:
可执行文件和参数未知,因为它们是在运行时从外部源(xml config)配置和检索的。在
我的代码在参数是已知值(例如1)并进行了配置时工作,但是期望参数可以是环境变量并配置为环境变量,这应该在运行时进行解释
在下面的示例中,我使用echo作为myexec.sh公司演示场景。 这是为了证明这个问题“cmdlst”是从配置文件生成的,该文件可以是具有任意数量的参数和值(可以是值或环境变量)的任何脚本。在
test1.py
import subprocess
import os
cmdlst = ['echo','param1','param2']
try:
proc = subprocess.Popen(cmdlst,stdout=subprocess.PIPE)
jobpid = proc.pid
stdout_value, stderr_value = proc.communicate()
except (OSError, subprocess.CalledProcessError) as err:
raise
print stdout_value
结果测试1
python test1.py
-->param1参数2
test2.py
^{pr2}$结果测试2
导出参数=param2回显$PARAM
-->;参数2 python test2.py
-->;参数1$PARAM
考虑到$PARAM只在运行时已知,并且需要从当前环境中检索,我需要test2生成与test1相同的结果。在
我欢迎你的建议。在
不能使用
$VAR
访问环境变量。您应该改为使用os.environ[..]
:如果要让shell展开环境变量,必须设置
shell=True
或者,您可以在构造命令时自己查询环境变量,然后就不需要shell扩展了
^{pr2}$你可以:
或者:
^{pr2}$相关问题 更多 >
编程相关推荐