3

位置引数argparse、オプションの引数、およびargparse.REMAINDER

parser = argparse.ArgumentParser()
parser.add_argument('verbose', action="store")
parser.add_argument('--config', '-c', nargs="?", dest="config_file")
parser.add_argument('--dry-run', action="store_true", dest="dryrun")
parser.add_argument('args', nargs=argparse.REMAINDER, action="store")

サンプル実行:

python test.py verose="5" --config config.xml graph --dry-run

期待される出力:

verbose = "5"
config_file = config.xml
dryrun = True
args = ['graph']

実際の出力:

verbose = "5"
config_file = config.xml
dryrun = False
args = ['graph', '--dry-run']

私の要件は、、、を持っていることですverbose-cコマンドラインオプション--configおよび--dry-runコマンドラインで提供されるその他のオプションは、コマンドラインargsでの引数の出現順序に関係なく、リストに格納する必要があります。私が間違っているところを助けてください。また、Python用のより良いコマンドラインパーサーは他にありますか?

4

1 に答える 1

5

必要な構成は次のとおりです。

    parser.add_argument('--verbose', action="store")
    parser.add_argument('-c', '--config', nargs="?", dest="config_file")
    parser.add_argument('--dry-run', action="store_true", dest="dryrun")
    parser.add_argument('args', nargs='*')

あなたが与えた「REMAINDER」引数は、argparseモジュールに、最初の引数が見つかったときに残りの引数と一致しない場合に、argsの残りの引数を取るように具体的に指示していると思います。

'*'を使用するために0個以上の引数が必要なargs場合、少なくとも1つの引数が必要な場合は、nargs引数として'+'を使用します。

それ以外に、必要な型(intやfile引数など)ですでに解析できる可能性がたくさんあるので、 argparseのドキュメントをお勧めします。またCLI-argparse、無料のAptana Studioでモジュールを作成すると、いくつかの標準引数(verboseなど)がすでに設定されているargparseの優れたラッパーが提供されます。その場合の詳細は、整数としてのレベルになります。

于 2013-03-23T06:03:23.053 に答える