用于读取和写入环境变量的模块。
envitro的Python项目详细描述
从操作系统环境变量中读取值的模块。
与使用os.getenv()相比,该模块提供了方便的功能, 用于分析基本数据类型。它还允许指定可选的默认值,如果 环境变量不存在。基本环境变量解析和 也要进行消毒。
用法
importosimportenvitro# fails when environment variables are missingbool_required=envitro.bool("BOOL_ENV")int_required=envitro.int("INTEGER_ENV")float_required=envitro.float("FLOAT_ENV")str_required=envitro.str("STRING_ENV")# basic sanitizingos.environ["STR_ENV"]=" var with spaces "envitro.str("STR_ENV")# returns "var with spaces"# falls back to defaultsbool_default=envitro.bool("BOOL_NOT_FOUND",default=False)int_default=envitro.int("INTEGER_NOT_FOUND",default=42)float_default=envitro.float("FLOAT_NOT_FOUND",default=42.44)str_default=envitro.str("STRING_NOT_FOUND",default="my_default")# try multiple fallback ENV variablesos.environ["FALLBACK_ENV"]="fallback_val"single_fallback=envitro.str("MISSING",fallback="FALLBACK_ENV")multiple_fallback=envitro.str("MISSING",fallback=["FALL_MISSING_1","FALL_MISSING_2","FALLBACK_ENV"])# get and set raw environment variablesenvitro.write("EXISTING_VAR",None)# clear the environment variableenvitro.write("RAW_STRING"," raw_string ")envitro.read("RAW_STRING")# returns " raw_string "envitro.read("MISSING_RAW_STRING",default=" defaultval ")# returns " defaultval "# lists/tuplesos.environ["LIST_ENV"]="item1,item2,item3"list_required=envitro.list("LIST_ENV")# returns ["item1", "item2", "item3"]tuple_required=envitro.tuple("LIST_ENV")# returns ("item1", "item2", "item3")os.environ["LIST_ENV2"]="item1;item2;item3"list_required2=envitro.list("LIST_ENV2",separator=";")# returns ["item1", "item2", "item3"]tuple_required2=envitro.tuple("LIST_ENV2",separator=";")# returns ("item1", "item2", "item3")# utility functionsenvitro.isset("MAYBE_SET_VARIABLE")# return True/False
装饰工
还有一些装饰器可以根据环境选择性地启用或禁用函数。 变量。
importenvitro@envitro.decorators.isset('ALLOW_FOO')deffoo():return"Hello World"envitro.write('ALLOW_FOO','1')foo()# allowedenvitro.write('ALLOW_FOO',None)foo()# return "None" and is not executed@envitro.decorators.bool('ALLOW_REMOTE')defget_remote(arg1,arg2):returncall_remote_service(arg1,arg2)envitro.write('ALLOW_REMOTE','True')get_remote('hello','world')# calls remote serviceenvitro.write('ALLOW_REMOTE','False')get_remote('hello','world')# returns "None" and is not executed