2017-06-12 77 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