我的serverless.yml文件如下:
environment:
IS_OFFLINE: False
DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}
iamRoleStatements: ${file(config/iam.yml)}
但是,当我尝试评估IS_OFFLINE
变量时,它会将其解析为字符串,从而使值真实,尽管已将其设置为False
>>>> print(os.environ.get('IS_OFFLINE'))
'IS_OFFLINE': 'false'
如果有配置.yml文件的另一种方法,我宁愿避免这种情况(在所有语言的Python中使用)。
if os.environ.get('IS_OFFLINE') == "true":
答案 0 :(得分:0)
2021 年,true
中的 false
/serverless.yml
变量在 Python 中仍会转换为 'true'
/'false'
字符串。
您可以使用 strtobool
中的 distutils.util
来安全地解析它们:
from distutils.util import strtobool
if strtobool(environ.get("MY_VAR")):
这比字符串比较更简洁,适用于许多真/假同义词,如是/否、1/0、开/关。见https://docs.python.org/3/distutils/apiref.html#distutils.util.strtobool
未定义的变量将评估为 False
:
from distutils.util import strtobool
if strtobool(environ.get("MY_UNDEFINED_VAR")):
# this will NOT be executed
print('var is undefined')