2016-10-14 5 views
1

私は引数パーサを作成した後です。パーザに引数の規則が含まれているかどうかを確認する方法はありますか。私が何を意味するのかを説明するコードがあります。ArgumentParserに引数が含まれているかどうかを確認する方法は?

from argparse import ArgumentParser 

parser = ArgumentParser() 
parser.add_argument('--foo') 
parser.add_argument('--bar') 

'foo' in parser 
# => True 
'bar' in parser 
# => True 
'baz' in parser 
# => False 

つまり、引数がパーサーに存在するかどうかを知りたいと思います。

プログラムの初期化の一環として、いくつかの設定ファイルを読み込んでいます。設定ファイルにパーサにない設定がある場合は、そのユーザに警告したいと思います。

+1

http://stackoverflow.com/questions/39996295/correct-way-to -get-allowed-arguments-from-argumentparserが役立つはずです。 – hpaulj

+0

@hpauljありがとう!私が検索したときにその質問が表示されなかった理由はわかりません。私はこれを重複としてマークしました。 – Annan

答えて

0

それは少し不格好ですが、あなたがいない引数を持つparse_argsを実行し、その結果Namespaceオブジェクトのキーを取り出すことができます:

>>> 'foo' in vars(parser.parse_args()) 
True 
>>> 'baz' in vars(parser.parse_args()) 
False 
+0

お返事ありがとうございます。私の場合のこの問題の1つの問題は、 'default = argparse.SUPPRESS'を使用しているためです。ユーザーが指定しない設定は設定ファイルを上書きしません。私はそれが重複しているように見えるので、質問をクローズしました - そして、他の質問にはかなりの答えがあります。 – Annan

関連する問題