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

您需要将required toTruemetavar(它负责B)设置为''

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

实际上,如果在模式下required运行脚本,您仍然会看到您的参数是可选的。help这是因为一个错误:在“可选参数”下显示的 argparse 必需参数

argparse 模块在默认帮助消息中将所需的 args 列为可选。

还建议了一些解决方法,但我更喜欢这个:添加您自己的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 时请使用 required 关键字: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 回答