現在、argparseを使用して引数を解析し、ブール値のオプションとしてフラグを格納しています。次に、どのフラグがtrueに設定されているかを確認し、その関数を実行します。 Argparseは入力ファイルを解析します。入力ファイルはオープンされ、呼び出された関数に引数として渡されます。だから、argparse他のオプションを解析した後に関数を呼び出す
:
parser.add_argument('input_data', action='store', help='some help')
parser.add_argument('outputname', action='store',default=None, help='some help')
parser.add_argument('--flag','-f', action='store_true', dest='flag', default=False, help='help!')
私はフラグ関数が呼び出される前に、そこからいくつかの情報を読み取るためにINPUT_DATAを開く必要があります。それは、アクションキーワードは関数を呼び出す持ってsubclass argparseすることが可能である
if args.flag == True:
array_out = flag(array_read_from_input)
if args.outputname == None:
name = 'Flag.tif'
:これは、現在のように実装されています。
input_dataオプションを解析して何らかの処理を実行し、argparseのアクションパラメータをサブクラス化することで、各引数にifループを入れ子にすることなくフラグ関数を呼び出すことはできますか?
オブジェクトを「True」または「None」と比較しないでください。 'is'を使うか、オブジェクトの真理値を使用してください(' args.flag:... 'と' args.outputnameがNone'ならば)。また、カスタムアクションを正しく作成できることもわかりますか? argparseのドキュメントを読んでください。 – Bakuriu
@Bakuriu "argparseをサブクラス化して、actionキーワードを関数に呼び出すことは可能です。"問題は、カスタムアクションを作成することが可能かどうかではなく、そのアクションを解析して他のargを操作した後に呼び出すことができるかどうかではありません。 – Jzl5325
* after *構文解析を呼び出す場合は、あなたの質問に 'argparse'の関係が何か分かりません。そのモジュールは、コマンドラインを解析し、最終的に*解析中のアクション*を実行するだけです。また、私は二重 'if'の何が間違っているのか理解していません。 補足:[parser](http://docs.python.org/dev/library/argparse.html#argumentparser-objects)のサブクラスを使用し、 'parse_args'を再実装することはできませんそこに呼ばれますが、あなたはまだそこに二重 ''を置かなければなりません。 – Bakuriu