gpt4 book ai didi

Python 参数解析 : combine multiple-value argument with default and const

转载 作者:太空狗 更新时间:2023-10-30 01:16:08 26 4
gpt4 key购买 nike

我一直在寻找解决方案来添加一个参数,该参数的行为与 action='store_const' 相同,但会采用多个值。

所以如果我根本不传递它,它应该没有值(或一些值),如果我传递它没有值它应该有默认值,如果我传递它有值它应该是这些值的列表。

例如

parser.parse_args(''.split())
parser.parse_args('-a'.split())
parser.parse_args('-a 1 2 3'.split())

应该导致

[None]
[0]
[1, 2, 3]

最佳答案

不太难:

parser = argparse.ArgumentParser()
parser.add_argument('-a',default=[None],action='store',type=int,nargs='*')
print parser.parse_args(''.split())
print parser.parse_args('-a'.split())
print parser.parse_args('-a 1 2 3'.split())

如果你想在没有额外参数的情况下对 -a 进行特殊处理,那么不使用自定义 Action 就无法做到这一点:

import argparse
class MyAction(argparse.Action):
def __call__(self,parser,namespace,values,option_string=None):
if not values:
setattr(namespace,self.dest,[0])
else:
setattr(namespace,self.dest,values)

parser = argparse.ArgumentParser()
parser.add_argument('-a',default=[None],action=MyAction,type=int,nargs='*')
print parser.parse_args(''.split())
print parser.parse_args('-a'.split())
print parser.parse_args('-a 1 2 3'.split())

关于Python 参数解析 : combine multiple-value argument with default and const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15836215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com