我有一个包含环境变量信息的XML,它通过python脚本设置到shell中。以下是XML的一个片段:
<envVar name='QTDIR'>/homeqt/libs.qt4/qt4.5.1</envVar>
<envVar name='MAKE'>which make</envVar>
这个片段的这一部分告诉我的python脚本设置环境变量QTDIR和MAKE。在
我关心的是如何设置上述变量。我知道我可以用操作系统环境要设置环境变量并执行以下操作:
^{pr2}$但是我不能用它来设置MAKE变量,我必须执行命令“which MAKE”(以获得makeexecutable的路径)。我的目标是使用相同的方法/函数来设置每个变量。在
所以,我想做些类似的事情:
Popen("QTDIR=/homeqt/libs.qt4/qt4.5.1 ; export QTDIR", shell=True, stdout=PIPE, stderr=PIPE)
Popen("MAKE=which make ; export MAKE", shell=True, stdout=PIPE, stderr=PIPE)
但是如果我这样做,变量将只为子进程设置,而不是为当前shell设置。在
所以,我的问题是,有没有办法做我想做的事?我不想分析XML并做这样的事情:
(伪代码)
if QTDIR has normal value
os.environ['QTDIR'] = "/homeqt/libs.qt4/qt4.5.1"
if MAKE has value to be executed
p = Popen("which make", shell=True, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
os.environ['MAKE'] = stdout
你的陈述模棱两可:
如何在}之间作出决定:
^{pr2}$MAKE=which make
或{如果xml文件是机器生成的,并且人们不经常查看/编辑这个文件,那么您可以使用一个详细的显式表示法,如suggested by @stefan。在
否则,可以使用更简洁简单的表示法:
下面是一个Python脚本,它将该格式解析为字典:
或者你可以这样做,例如:
如果您需要更复杂的功能,xml格式可能是一种合理的回退。在
我将使用XML属性。在
伪代码取决于您的xml库:
^{pr2}$相关问题 更多 >
编程相关推荐