我想提出的是支持的格式argparse:扁平化作用的結果=「追加」
./myscript --env ONE=1,TWO=2 --env THREE=3
這裏的參數列表的腳本是我的嘗試:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--env',
type=lambda s: s.split(','),
action='append',
)
options = parser.parse_args()
print options.env
$ ./myscript --env ONE=1,TWO=2 --env THREE=3
[['ONE=1', 'TWO=2'], ['THREE=3']]
當然我可以在後處理解決這個問題:
options.env = [x for y in options.env for x in y]
,但我不知道是否有某種方式直接從argparse得到扁平名單,讓我不要我必須在我的腦海中保留一份「事後需要平息的事情」的清單,因爲我正在爲該計劃添加新的選項。
如果我使用nargs='*'
而不是type=lambda...
,則同樣的問題適用。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--env',
nargs='+',
action='append',
)
options = parser.parse_args()
print options.env
$ ./myscript --env ONE=1 TWO=2 --env THREE=3
[['ONE=1', 'TWO=2'], ['THREE=3']]
在這裏找到了一些解決方法:http://stackoverflow.com/questions/19228516/python-argparse-with-nargs-behaviour-incorrect但我沒有實際使用在生產代碼。 – Quuxplusone
在生產代碼中使用解決方法的標準是什麼? – hpaulj