2012-06-11 23 views
2

我有幾個可選參數,其中一個需要存儲多個值 - 即它的類型既不是字符串也不是整數。 argparse是否支持其他類型的可選參數?argparse - 帶列表/元組的可選參數

例如,我想這個命令:

>>> python example1 test_project --name try1 3 

是代碼這樣的等價物:

args.name = {'try1', '3'} 

這可能嗎?或者我將被迫使用action='store_true',然後提示用戶以獲取更多信息,如果他選擇此選項?

回答

4

我真的很難過你的問題。這是你想要的嗎?

import argparse 

parser=argparse.ArgumentParser() 
parser.add_argument('--name',nargs='*',action='store') 

print(parser.parse_args('--name try1 3'.split())) #Namespace(name=['try1', '3']) 

如果不是的話,也許你可以嘗試一點與你想要的東西,使argparse做的,你已經能夠用它做更加清晰。

+0

謝謝。我不知道我是如何錯過文檔中的nargs ... –

+0

@mgilson @ Gil.I Gil,基於標題,您接受這個答案,並且您使用'nargs *'我猜你想要做什麼是從命令行收集多個參數並將它們全部存儲在'name'裏面?我也猜測你用'-'輸入'-name'是原始問題中的一個錯字?基於這些猜測,我已經嚴格拷貝了原始問題,試圖使其更加清晰。讓我知道你的想法。 – culix

+0

@mgilson我已經更新了答案,現在問題很清楚。希望沒關係。 – culix