Option 1
我认为这很有效:
my_env = os.getenv("ENV_VAR", 'False').lower() in ('true', '1', 't')
它允许:类似的事情true
, True
, TRUE
, 1
, "1"
, TrUe
, t
, T
, ...
更新:在阅读了Klaas的评论后,我更新了原始代码my_env = bool(os.getenv(...
to my_env = os.getenv(...
因为in
将导致bool
type
Option 2
更新:
在 @MattG 评论之后,我添加了一个新的解决方案,该解决方案会引发以下条目的错误ttrue
而不是返回False
:
# ...
import os
# ...
def get_variable(name: str, default_value: bool | None = None) -> bool:
true_ = ('true', '1', 't') # Add more entries if you want, like: `y`, `yes`, `on`, ...
false_ = ('false', '0', 'f') # Add more entries if you want, like: `n`, `no`, `off`, ...
value: str | None = os.getenv(name, None)
if value is None:
if default_value is None:
raise ValueError(f'Variable `{name}` not set!')
else:
value = str(default_value)
if value.lower() not in true_ + false_:
raise ValueError(f'Invalid value `{value}` for variable `{name}`')
return value in true_
# ...
my_env1 = get_variable("ENV_VAR1")
my_env2 = get_variable(name="ENV_VAR2") # Raise error if variable was not set
my_env3 = get_variable(name="ENV_VAR3", default_value=False) # return False if variable was not set