将单位添加到argparse

时间:2013-11-04 07:03:19

标签: python argparse

目前我有

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)

无论如何这样做或者我不应该这样做?

2 个答案:

答案 0 :(得分: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参数时,该变量是未知的。

答案 1 :(得分:0)

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