我正在尝试循环访问一组特定的参数(仅限“-p”)。
我在终端中声明它们如下:python program.py -p paramOne paramTwo
。我的程序输出只有 paramOne ,我不明白为什么。我的目标是获得以下输出:
paramOne
paramTwo
谁能告诉我代码中的错误在哪里?
这是代码:
# Parcing definitions
parser = optparse.OptionParser()
groupParam = optparse.OptionGroup(parser, 'Output handling')
parser.add_option('-q', '--quiet', action='store_false', dest='verbose', default=True,
help=('don\'t print status messages to stdout'))
groupParam.add_option('-p', '--parameters', action='store', dest='paramNum', type='string',
help=('specify number of parameters (Optional)'))
parser.add_option_group(groupParam)
(options, args) = parser.parse_args()
for groupParam1 in groupParam.option_list:
print getattr(options, groupParam1.dest)
附注我正在运行 Python 2.6.6
最佳答案
如果不指定nargs
,则使用1
作为默认值;仅消耗一个位置参数。
指定 nargs=2
以获取 2 个值:
groupParam.add_option(
'-p', '--parameters', action='store', dest='paramNum', type='string',
nargs=2, # <---
help=('specify number of parameters (Optional)')
)
根据documentation :
How many arguments of type type should be consumed when this option is seen. If > 1, optparse will store a tuple of values to dest.
因此,应修改最后一个循环以检查tuple
以按您想要的方式打印:
for groupParam1 in groupParam.option_list:
values = getattr(options, groupParam1.dest)
if isinstance(values, tuple):
for value in values:
print(value)
关于python - 如何在 Python 中循环 optparse.OptionGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41679493/