2017-06-12 260 views
0

因此,我想检查并验证给定的变量“abc”是否存在并且是真的。如果变量存在并且是False,那么我希望它去别的地方。这里是我如何得到它在Python中工作:检查环境变量是否存在并设置为True

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

有没有更好的方式来做到这一点?

+0

'env.get(“ABC”,FALSE)== TRUE' – inspectorG4dget

+0

相同的答案中的所有的海誓山盟10秒该字符串是令人印象深刻...... – Aaron

+3

你实际上是寻找价值的字符串“真”,还是你在寻找布尔型的“真”? – idjaw

回答

3

您可以检查,看看是否变量是由globals()locals()返回的字典。 (感谢您亚伦提醒我,以添加完整的代码)

对于本地变量:

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

+1

完整答案看起来像'如果locals().get('abc')== True:'(或' ... globals()...') – Aaron

+0

@Aaron有没有办法让它在python 2.7.9中工作? – Jason

+0

@Jason它应该已经工作 – Aaron

0

您可以使用:

env.get("abc", False) 

假,如果是 “ABC” 是不是在ENV的默认值。

0

这足以从ENV得到它,我觉得

env.get('abc') 
1

你可以使用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") 
+1

如果你这样做,你应该做'除了NameError:'而不是盲目地捕捉任何异常 – trentcl