[英]make shorter os.getenv in Python
import os
BUCKET = os.getenv("BUCKET")
IN_CSV = os.getenv("IN_CSV")
OUT_CSV = os.getenv("OUT_CSV")
现在,你看到问题了吗? 我不想重新输入两次变量名,有没有办法不这样做? 也许一些 function get_and_init_env。 get_and_init_env(BUCKET) 执行后应该有一个名为 BUCKET 的变量,其值为 os.getenv("BUCKET") 在 locals()
可能不完全是您所需要的,但为了节省输入在 ipython 上构建的东西的时间,我曾经制作了一个 class ,它接收字符串的字典(例如可以很容易地从os.environ
制作的字符串),它是__init__
它调用setattr
使自己具有反映 dict 内容的属性。 从那里我只需要.blah
那个实例而不是['blah']
但更重要的是在 ipython 中可以.b<tab>
并调出它可能的项目。 可能是这样的
...
class DotDict:
def __init__(self,dictish):
self._original = dict(dictish) #a dict has a lot of useful capabilities that can be routed to it...
for x,y in self._original.items():
setattr(self,CleanStr(x),y)
...
...
#make useful dicts part of the module
env =DotDict(os.environ)
...
from MyMod import env as env0
env0.BUCKET #just use it...
由于大多数环境变量应该非常干净,您可能只使用x
而不是CleanStr(x)
但确实应该有办法将任何 x object 变为有效名称,无论是 str 或 repr 还是 hash 相关并以一些喜欢的为前缀字符序列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.