5

現在、argparse を使用して引数を解析し、フラグをブール値のオプションとして保存しています。次に、どのフラグが true に設定されているかを確認し、その関数を実行します。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 を開いて情報を読み取る必要があります。これは現在、次のように実装されています。

if args.flag == True:
    array_out = flag(array_read_from_input)
    if args.outputname == None:
        name = 'Flag.tif'

argparse をサブクラス化して、 action キーワードで関数を呼び出す ことができます。

input_data オプションを解析し、何らかの処理を実行してから、argparse のアクション パラメータをサブクラス化するなどして、引数ごとに if ループをネストせずにフラグ関数を呼び出すことは可能ですか?

4

1 に答える 1

0

input_data オプションを解析し、何らかの処理を実行してから、argparse のアクション パラメータをサブクラス化するなどして、引数ごとに if ループをネストせずにフラグ関数を呼び出すことは可能ですか?

ご質問のとおりです。

class FooAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string=None):
        << some processing of values >>
        array_out = flag(values)
        setattr(namespace, self.dest, array_out)

parser = argparse.ArgumentParser()
parser.add_argument('input_data', action=FooAction, help='some help')
于 2013-02-27T19:55:53.793 に答える