我需要检查一个或另一个环境变量。
对于临时变量——我可以使用:
if var1:
print('Var1 found')
elif var2:
print('Var2 found')
else:
print('Neither Var1 nor Var2 not found')
我怎样才能对环境变量做同样的事情?
我不能使用 if/else,因为如果找不到变量 - os.environ 将引发 KeyError:
File "C:\Python27\lib\os.py", line 425, in __getitem__
return self.data[key.upper()]
KeyError: 'BAMBOO_WORKING_DIRECTORY'
如果我要执行两个 try/except,例如:
try:
r = os.environ['Var1']
except KeyError as error:
print('Var1 not found')
try:
r = os.environ['Var2']
except KeyError as error:
print('Var2 not found')
因此,它将同时检查它们。但我需要 Var1 或 Var2。
在第一次 try/except 之后添加 if/else,检查 if r: 第二次调用 try/except 如果不是?威尔看起来很恶心……
请您参考如下方法:
os.environ 是一个字典,因此您可以使用 .get 调用它的默认值。
如果您结合使用两个 .get 调用,那么这将为您提供第一个变量,如果它存在(因为 python 短路),否则它将为您提供第二个变量。
所以本质上,代码被简化为:
r = os.environ.get('Var1', "") or os.environ.get('Var2', "")
在这种情况下,不需要 try - except block 。
将这个链接稍微长一点,你可以获得同样给出默认值的表达式:
>>> r = os.environ.get('Var1', "") or os.environ.get('Var2', "") or (
"Neither Var1 nor Var2 not found")
