【发布时间】:2019-06-14 13:00:44
【问题描述】:
我有一个 bash shell 脚本(在 Ubuntu 18.04 上运行),它读取一些输入(文件或用户)并根据输入为几个(环境)变量分配不同的值。该脚本启动一个程序(python),然后在不同的执行点,需要环境变量已分配的值。
到目前为止我使用的一般方法是这样的
# shell script
[...]
export VAR_A = value1
export VAR_B = value2
python program.py
[...]
程序由几个类组成,这些类有时需要脚本中设置的值。
# class1.py, used by program.py
import helper
[...]
var_a = helper.get_var_a()
var_b = helper.get_var_b()
[...]
帮助类用于实际读取环境变量。
# helper.py
[...]
import os
def get_var_a():
return os.environ["VAR_A"]
代码做正确的事。然而,它看起来并不“好”,我怀疑它是否遵循任何最佳实践。我想要或正在寻找的是一种读取环境变量一次并将它们存储在程序变量中的方法。大致如下:
# helper.py
# [...]
import os
ENVIRONMENT = { "VAR_A" : os.environ["VAR_A"], "VAR_B" : os.environ["VAR_B"] }
[...]
并得到它:
# class1.py
var_a = helper.ENVIRONMENT["VAR_A"]
问题: 这(上面的 sn-p)是一个更好或更坏的方法:
- 可读性/可维护性
- 代码执行/效率
- 还有其他更优化或“pythonic”的替代方案吗?
【问题讨论】:
-
看起来你正在尝试重写 os.environ :)
-
实际上可以说更好让程序稍后使用
os.environ检索环境变量 - 因为在此期间变量可能已经改变,而您想要使用最新版本 -
os.environ已包含进程已读取的环境变量。通过在其上添加另一本字典,您有什么收获?
标签: python bash environment-variables