import os
BUCKET = os.getenv("BUCKET")
IN_CSV = os.getenv("IN_CSV")
OUT_CSV = os.getenv("OUT_CSV")
现在,你明白问题了吧?我不想重新键入变量名两次,有没有办法不这样做?也许是一些函数get_and_int_env。get_and_int_env(BUCKET(执行后,locals((中应该有一个名为BUCKET的变量,其值为os.getenv("BUCKET"(
可能不是您所需要的,但为了节省在ipython上构建的东西中键入的时间,我曾经创建了一个类,它接受字符串的dict(例如可以很容易地从os.environ
中创建的dict(,在它的__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...
由于大多数environ-var应该非常干净,您可能只需要使用x
而不是CleanStr(x)
,但应该有一种方法将任何x对象转换为有效的名称,无论是str或repr,还是与哈希相关的,并以一些喜欢的字符序列为前缀。