我从环境变量中加载了8个变量。如果这些都不是,我想保释并sys.exit
-但我也想提醒用户缺少哪个变量。
有几种方法可以做到这一点。假设a = os.environ.get('a')
代码是通过h
最详细的方法是:
if a is None:
print("A is required")
sys.exit(1)
if b is None:
print("B is required")
sys.exit(1)
if c is None:
print("C is required")
sys.exit(1)
...
so on until the check for h
最干净的方法是:
if not any([a,b,c,d,e,f,g,h]):
print("? is required")
sys.exit(1)
甚至:
if None in [a,b,c,d,e,f,g,h]:
print("? is required")
sys.exit(1)
是否有可能实际上从更多的python检查之一(后两个)中获取变量名并将其输出给用户?
我可以通过执行[a,b,c,d,e,f,g,h].index(None)
来获取变量的 index ,但是我不确定如何从索引到变量名。
答案 0 :(得分:4)
首先检索环境变量时执行检查:
def needenv(name):
val = os.environ.get(name)
if val is None:
sys.exit('{} is required.'.format(name))
return val
a = needenv('a')
b = needenv('b')
...
答案 1 :(得分:1)
您可以遍历环境:
required_vars = ['a', 'b']
for name in required_vars:
if not name in os.environ:
sys.exit('{} is required.'.format(name))
答案 2 :(得分:0)
我会将它们读入字典,然后可以使用all()检查一切是否正常,还可以报告缺少的内容(可能不止一个)。
env_dict[‘a’] = os.environ.get(‘a’) # etc.
if not all(v for k,v in env_dict.items()):
missing = [k for k,v in env_dict.items() if v is None]