检查环境变量是不是存在并设置为 True [关闭]

Posted

技术标签:

【中文标题】检查环境变量是不是存在并设置为 True [关闭]【英文标题】: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 版时,它对我有用。你遇到了什么错误? 【参考方案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')

【讨论】:

以上是关于检查环境变量是不是存在并设置为 True [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

csh 成语检查环境变量是不是存在?

可选关闭并检查它是不是为 nil

Javascript:检查变量是不是为假或根本不存在[重复]

PHP中检测一个变量是不是有设置的函数是啥

如何检查 Node.js 中是不是设置了环境变量?

检查环境变量是不是存在的好习惯是啥?