2013-11-04 61 views
1

目前我有添加设备到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) 

有没有做这个或这个道理我不应该这样做?

+1

我个人认为没有必要在默认值后包含单位。 – Tim

+2

原因不是:现在我尝试输入'--startfreq 100 MHz' – roippi

+1

如果你想在默认值中包含'MHz',那么默认值不应该是'int'。 – Bakuriu

回答

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的内置的默认值是假的,但%(default)s不捕获。

argparse.ArgumentDefaultsHelpFormatter是一种便利的工具。在help字符串中没有任何效果。当默认值可能是一个变量时,%(default)s是最有用的,当您定义参数及其参数help时,该变量是未知的。

0

如果您将开始频率的类型设置为一个字符串,那么您可以将其默认设置为“400 MHz” - 然后您可以将其解析为所需的数字 - 您甚至可以查看是否有可能解析这些单元,以便用户可以用100k或200kHz调用脚本等。