4

argparseモジュールを使用してCLIを作成しようとしていますが、引数の要件が異なるさまざまなコマンドが必要です。これを試しました。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo', help='foo help')
parser.add_argument('test', nargs=1, help='test help')
args = parser.parse_args()

私が欲しいのは走れるようにすることです、 しかし私が走るpython test.py fooと私は得ます。コマンドが、、またはのように動作する方法はありますか?または、PythonでCLIを作成するためのより良い方法はありますか?python test.py test someargpython test.py fooerror: too few argumentsgit statusgit commitpip install

4

3 に答える 3

15

@crodjerは正しいです。
例を提供するには:

import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(title='subcommands', 
                                   description='valid subcommands',
                                   help='additional help')
foo_parser = subparsers.add_parser('foo', help='foo help')
bar_parser = subparsers.add_parser('bar', help='bar help')
bar_parser.add_argument('somearg')
args = parser.parse_args()

サブパーサーごとの異なる引数のテスト:

$ python subparsers_example.py bar somearg
名前空間(somearg ='somearg')

$ python subparsers_example.py foo
Namespace()

$ python subparsers_example.py foo somearg
使用法:argparse_subparsers.py foo [-h]
subparser_example.py foo:エラー:認識されない引数:somearg

ヘルプ出力:

$ python subparsers_example.py foo -h
使用法:argparse_subparsers.py foo [-h]

オプションの引数:
  -h、-helpこのヘルプメッセージを表示して終了します

$ python subparsers_example.py bar -h
使用法:argparse_subparsers.py bar [-h] somearg

位置引数:
  somearg

オプションの引数:
  -h、-helpこのヘルプメッセージを表示して終了します
于 2011-06-18T07:08:41.100 に答える
6

これはおそらくあなたが望むものです:

http://docs.python.org/library/argparse.html#sub-commands

これにより、独自の引数スキームを持つサブ引数を追加できます。

于 2011-06-18T06:59:10.040 に答える
0

デフォルトでは、argparse引数は1つの値を消費します。fooの動作を変えたい場合は、それを指定する必要があります。デフォルトはnargs=0だと思うようですが、そうではありません。argparseのドキュメント(http://docs.python.org/dev/library/argparse.html#nargs)から: "nargsキーワード引数が指定されていない場合、消費される引数の数はアクションによって決定されます。通常、これはつまり、単一のコマンドライン引数が消費され、単一のアイテム(リストではない)が生成されます。」

nargs ='?'を使用できます fooの場合、コマンドラインから何も提供されない場合にデフォルト値を指定するか、デフォルト以外のアクション(おそらく'store_true'?)を使用します。

于 2011-06-18T07:03:58.337 に答える