2017-06-14 13 views
-1

複数のENV変数にカスタマイズされた例外が存在するかどうかを確認する方法がありますか?おそらく、EVN変数のグループを一致させ、その出力に変数名を自己参照するという例外を持つ方法でしょうか?複数のENV変数が存在するかどうかを確認する

if os.environ.get('USERNAME') is not None: 
    self.username = os.environ.get('USERNAME') 
else: 
    raise CustomException('Environment variable USERNAME not set') 
if os.environ.get('PASSWORD') is not None: 
    self.password = os.environ.get('PASSWORD') 
else: 
    raise CustomException('Environment variable PASSWORD not set') 

私はPython 2.7を使用しています。ありがとう!

あなたはいつも3つの項目のリストでループを使用することができ

答えて

0

for data in [ 
    ["USERNAME", "username", CustomException], 
    ["PASSWORD", "password", CustomException] 
]: 
    env_var = os.environ.get(data[0]) 


    if env_var: 
     setattr(self, data[1], env_var) 
    else: 
     # Should work, cannot check due to not having actually Python installed. 
     raise data[2]("Environment variable %s not set" % data[0]) 

あなたはインデックスを使用して好きではない場合は、変更した場合、あなたはより一貫性のあるアクセス権を持っている。このようなdictsでアイテムを置き換えることができますオーダー:

{"env_var_name": "USERNAME", "attr": "username", "exception_cls": CustomException} 
0

だけtry:ブロック内のすべての環境のルックアップを置く:

try: 
    self.username= os.environ['USERNAME'] 
    self.password= os.environ['PASSWORD'] 
except KeyError as e: 
    raise CustomException('Environment variable {} not set'.format(e.args[0])) 
+0

ネイトの場合設定されていない場合、 "USERNAME"が表示されます。 – EthanB

+0

@エタンBまあ、そうです。それはあなたのコードと同じことです。 –

+0

私が避けようとしているのは、ENV変数ごとに一致ステートメントを作成することです。私は〜10の合計があります。しかし、複数存在しない場合は、存在しないすべてのエントリを例外に表示する必要があります。 – EthanB

関連する問題