我想创建一个命令行标志,可以用作
./prog.py --myarg=abcd,e,fg
在解析器内部,将其转换为['abcd', 'e', 'fg']
(一个元组也可以).
我已经用action
和type
成功地做到了这一点,但我觉得其中一个很可能是滥用系统或遗漏角落 case ,而另一个是正确的.然而,我不知道哪个是哪个.
action
人:
import argparse
class SplitArgs(argparse.Action):
def __call__(self, parser, namespace, values, option_string=None):
setattr(namespace, self.dest, values.split(','))
parser = argparse.ArgumentParser()
parser.add_argument('--myarg', action=SplitArgs)
args = parser.parse_args()
print(args.myarg)
而不是type
:
import argparse
def list_str(values):
return values.split(',')
parser = argparse.ArgumentParser()
parser.add_argument('--myarg', type=list_str)
args = parser.parse_args()
print(args.myarg)