1

目前我有

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
group = parser.add_argument_group("Calibration Options")
group.add_argument('-c', '--calibration', default=False, action="store_true", help="Calibrate Gear", dest="calibrate")
group.add_argument('--startFreq', default=400, type=int, help="Start Frequency [MHz]", dest="calStart")

这会产生这个输出

Calibration Options:
  -c, --calibration     Calibrate Gear (default: False)
  --startFreq           Start Frequency (MHz) (default: 400)

没关系,但我希望将“单位”包含在默认值中,例如..

Calibration Options:
  -c, --calibration     Calibrate Gear (default: False)
  --startFreq           Start Frequency (default: 400 MHz)

有没有这样做或我不应该这样做的原因?

4

2 回答 2

1

把你自己%(default)s的放在帮助线上。专门的格式化程序所做的所有事情都是将该字符串添加到帮助中。

group.add_argument('--startFreq', default=400, type=int, help="Start Frequency (default: %(default)s MHz)", dest="calStart")

我也会使用:

`group.add_argument('-c', '--calibration', action="store_true", help="Calibrate Gear (default: False)", dest="calibrate")

的内置默认store_true值为 False,但%(default)s不捕获它。

argparse.ArgumentDefaultsHelpFormatter是一个方便的工具。没有什么是你不能在help字符串中做得很好的。 %(default)s当默认值可能是一个变量时最有用,当您定义参数及其help参数时这是未知的。

于 2013-11-04T17:16:11.657 回答
0

如果您将起始频率的类型设为字符串,那么您可以将其默认为“400 MHz” - 然后您可以将其解析为您需要的数字 - 您甚至希望查看是否有可能解析单位用户可以用 100k 或 200kHz 等调用您的脚本。

于 2013-11-04T07:42:54.637 回答