3

次のpythonスクリプトがあります

parser = argparse.ArgumentParser(description='Process controller.py arguments')
parser.add_argument("-b", help='Build number, e.g., 1234')
args = vars(parser.parse_args())

実行すると...

$ python CommandLineParser.py -h
usage: CommandLineParser.py [-h] [-b B]

Process controller.py arguments

optional arguments:
  -h, --help  show this help message and exit
  -b B        Build number, e.g., 1234

「-b」を「オプションではない」引数として表示するにはどうすればよいですか (そうではないためです!)。追加のボーナスとして、その後の大文字の「B」を削除するにはどうすればよいですか? ありがとう!

4

2 に答える 2

3

requiredmetavar (を担当) をに設定する必要がありTrueます。B''

parser.add_argument("-b", help='Build number, e.g., 1234', required=True, metavar='')

実際、requiredスクリプトをhelpモードで実行すると、引数はオプションとして表示されます。これはバグによるものです: "オプションの引数" の下に表示される argparse 必須の引数:

argparse モジュールは、必須の引数をオプションとしてデフォルトのヘルプ メッセージにリストします。

いくつかの回避策も提案されていますが、私はこれがもう 1 つ気に入っています。独自のrequired argumentsグループを追加します。

required_group = parser.add_argument_group('required arguments')
required_group.add_argument("-b", help='Build number, e.g., 1234', required=True, metavar='')

次に、コマンドラインに次のように表示されます。

$ python test.py -h
usage: test.py [-h] -b

Process controller.py arguments

optional arguments:
  -h, --help  show this help message and exit

required arguments:
  -b          Build number, e.g., 1234
于 2013-09-12T21:02:58.837 に答える
0

argparse に追加するときは、必要なキーワードを使用してください: http://docs.python.org/2/library/argparse.html#sub-commands

parser.add_argument("-b", help='Build number, e.g., 1234', required=True)
于 2013-09-12T21:02:29.020 に答える