检查环境变量是不是存在并设置为 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
?
如果env
是os.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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章