2014-08-27 143 views
0

我有一个python脚本,它运行一个set_env.sh文件。 后来我可以把这个新的变量环境改成set_env.sh 是可能的吗?从脚本python获取变量环境的变化

set_env.sh

var1="value1" var2="value2" var3="value3" 

get_env.py

import os 
os.system("set_env.sh") 
print os.environ['var1'] 

结果:KeyError异常: 'VAR1'

我知道我可以使用os.environ [ 'VAR1'] = 'value'(或者设置var env)到python文件中。 但我只能从shell文件访问此环境信息。

你能帮我吗?

+0

当您从外壳'env' - 你看到的变量设置? – alfasin 2014-08-27 23:06:08

+0

打印环境变量/值并将它们读入python – programmerjake 2014-08-27 23:06:19

+0

@programmerjake这就是'os.environ'所做的 – alfasin 2014-08-27 23:09:21

回答

0

我的临时解决方案是

(?P<variable>[\w]*)[ ]*[\=][ ]*[\"|\']{0,1}(?P<value>[\w]*)[\"|\']{0,1} 

Regular expression visualization

Debuggex Demo

 enviroment_regex = "(?P<variable>[\w]*)[ ]*[\=][ ]*[\"|\']{0,1}(?P<value>[\w]*)[\"|\']{0,1}" 
     match_object = re.search(enviroment_regex, open("set_env.sh", "r").read()) 
     os.environ[match_object.group("variable")] = match_object.group("value") 
0

为了设置从蟒使用环境变量:

os.environ["var1"] = "value1" 

请注意python会生成环境,这意味着只要您在python程序中,env将包含var1。如果您从shell env(运行该程序之后)键入,则不会记得var1

欲了解更多信息:https://www.inkling.com/read/programming-python-mark-lutz-4th/chapter-3/shell-environment-variables

+0

我的py脚本执行sh脚本。 – moylop260 2014-08-28 23:59:33

+0

@ moylop260是的,但它会在脚本完成执行后立即关闭的子shell中执行它。我想这个正确的问题是:你想要做什么?如果你依赖于env变量来排序python脚本的部分内容,那么请使用我的答案。 – alfasin 2014-08-29 00:10:14