最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Python中获取环境变量中os.environ.get和os.getenv的区别

GET crifan 1460浏览 0评论
折腾:
【未解决】Flask中如何利用环境变量实现自动加载开发还是生产的配置
期间,发现不同地方的获取环境变量的代码,略有不同:
https://stackoverflow.com/questions/41546883/can-somebody-explain-the-use-of-python-dotenv-module
的:os.environ.get
和:
https://robinislam.me/blog/reading-environment-variables-in-python/
的:os.getenv
想要搞清楚区别
到底用哪个
os.environ.get vs os.getenv
python – Difference between os.getenv and os.environ.get? – Stack Overflow
How do I access environment variables from Python? – Stack Overflow
【总结】
Python2.7中写了区别了:
  • os.environ.get
    • 基于import的逻辑
    • -》如果不存在某个环境变量,则会抛KeyError异常
  • os.getenv
    • (至少是在)CPython中,os.getenv是在os.environ.get的上层封装出来的
    • -》如果不存在某个环境变量,不会抛异常,只是返回None而已
所以各自的用法是:
(1)os.environ.get
try:  
   env_value = os.environ.get["
key_
maybe_not_exist"]
except KeyError: 
   print("Not exist environment value for %s" % "
key_
maybe_not_exist
")
if 
"
key_
maybe_not_exist" in os.environ:
    existed_env_value = 
os.environ["
key_
maybe_not_exist"]
(2)os.getenv
existed_env_value = 
os.
getenv(
"
key_
maybe_not_exist")
等价于:
existed_env_value = 
os.
getenv(
"
key_
maybe_not_exist", 
default=None
)
结论:
一般情况下,还是去用:os.getenv 更加方便:
  • 省去了检测是否存在此环境变量的判断了,直接获取值即可
    • 万一不存在,也不会抛异常,而只是返回个None
    • 后续判断值是否为真,继续操作即可
  • 好处是可以根据自己需要,设置自己想要的默认值

转载请注明:在路上 » 【已解决】Python中获取环境变量中os.environ.get和os.getenv的区别

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
80 queries in 0.185 seconds, using 22.10MB memory