Skip to main content
 首页 » 编程设计

python之多次尝试除非值可能不存在

2025年05月04日14mfrbuaa

我需要检查一个或另一个环境变量。

对于临时变量——我可以使用:

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")