【问题标题】:Checking if an environment variable exists and is set to True [closed]检查环境变量是否存在并设置为 True [关闭]
【发布时间】:2017-11-14 06:50:39
【问题描述】:

所以,我想检查并验证给定变量“abc”是否存在并且它是真的。如果变量存在并且为 False,那么我希望它转到其他位置。以下是我如何让它在 python 中工作:

env = os.environ.copy()
if "abc" in env and env['abc'] == "True":
    print "Works"
else:
    print "Doesn't work"

有没有更好的方法?

【问题讨论】:

  • env.get('abc', False) == True
  • 在 10 秒内一连串相同的答案令人印象深刻...
  • 您实际上是在寻找值为“True”的字符串,还是在寻找布尔值True
  • 如果envos.environ 并且它们实际上是环境变量,那么它将是一个字符串"True",但不清楚env 是什么以及可能已经完成了什么预处理。
  • @Jason 这很奇怪,locals()globals() 也存在于 Python 2.7 中......当我尝试使用 2.7 版时,它对我有用。你遇到了什么错误?

标签: python python-2.7 python-3.x environment-variables


【解决方案1】:

您可以检查变量是否在globals()locals() 返回的字典中。 (感谢 Aaron 提醒我添加完整代码)

对于局部变量:

if locals().get('abc'):
    print(abc)

对于全局变量:

if globals().get('abc'):
    print(abc)

对于环境变量:

if os.environ.get('abc')=='True':
    #abc is set to True

更多信息在这里:

https://docs.python.org/3/library/functions.html#locals https://docs.python.org/3/library/functions.html#globals

【讨论】:

  • 完整的答案看起来像if locals().get('abc') == True:(或...globals()...
  • @Aaron 有没有办法让它在 python 2.7.9 中工作?
  • @Jason 它应该已经工作了
【解决方案2】:

你可以使用:

env.get("abc", False)

如果 "abc" 不在 env 中,则默认值为 False。

【讨论】:

  • 做这份工作。谢谢
【解决方案3】:

您可以使用 Try except 块。

try:
    # Try calling ABC here anyway you like
    # Here I am just printing it
    print(abc)
except NameError:
    print("Variable ABC does not exist")

【讨论】:

  • 如果你这样做,你应该这样做except NameError:而不是盲目地捕捉任何异常
【解决方案4】:

我认为从 env 中获取它就足够了

env.get('abc')

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 2012-04-28
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 2011-01-21
    相关资源
    最近更新 更多