2015-10-23 30 views
0

我使用​​爲我的工作制作命令行工具。
我有一個要求,其中一個參數應該能夠取多個值。如何使用argparse爲參數合併多個值

該參數可以只採用合法值。

合法值可以是來自列表「ALL」的值的任意組合。

sample.py

import argparse 

sample_list = ["a", "b", "c"] 

parser = argparse.ArgumentParser() 

parser.add_argument('-M', '--Module', choices=sample_list, default=default_module, help='specify the Module name') 
args = parser.parse_args() 

使用上述方法允許值的允許值是:

python sample.py -M a 

我希望用戶能夠進入:

python sample.py -M a,b 
<ok> 

python sample.py -M ALL 
<ok> 

python sample.py -M D 
<error> 

如何做到這一點?

+0

嘗試參考http://stackoverflow.com/questions/8526675/python-argparse-optional-append-argument-with-choices –

+0

你可以爲該參數實現一個自定義的'type'函數,該函數將檢查' sample_list'你的規則,但沒有內置的方式來做AFAIK – jonrsharpe

+0

謝謝@DesmondLua我得到了解決我的問題。 –

回答

0

最簡單的解決方案是包含ALL是允許的選項列表,並使用action='append'nargs='*'接受多個值。我將ALL的解釋留給解析後的代碼。

正如在其他SO問題中所討論的,試圖處理逗號分隔的子列表是一種痛苦。

相關問題