python popen exec_python-如何在subprocess.Popen()中使用现有的Env...

脚本

在我的python脚本中,我需要使用x个可执行文件期望的命令行参数,将可执行文件作为子进程运行.

例:

> EG 1:myexec.sh param1 param2

> EG 2:myexec.sh param1 $MYPARAMVAL

可执行文件和参数未知,因为它们是在运行时从外部源(xml配置)中配置和检索的.

当参数是一个已知值(EG 1)并已配置时,我的代码正在工作,但是期望参数可以是环境变量并如此配置,应在运行时进行解释.(EG 2)

在下面的示例中,我将使用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 param2

test2.py

import subprocess

import os

cmdlst = ['echo','param1','$PARAM']

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

结果测试2

导出PARAM = param2

回声$PARAM

– >参数2

python test2.py

– > param1 $PARAM

考虑到$PARAM仅在运行时才知道,并且需要从当前环境中检索,因此我要求Test 2产生与Test 1相同的结果.

我欢迎您的建议.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值