2013-11-04 103 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調用腳本等。