2012-06-11 19 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