使用argpars从命令行获取自定义结构的列表

2024-04-19 19:19:01 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有类Foo,它包含3个字段:整数startend和字符串name。你知道吗

我想从argparse获取Foo的列表,使用类似于

my_program --foo 5 7 first --foo 10 12 second。你知道吗

parser.add_argument('--foo', action='append', default=[], nargs=2)非常接近,它将返回列表列表[['5', '7', 'first'], ['10', '12', 'second']]

我尝试添加type=Foo,但它尝试转换每个参数。
[[Foo('5'), Foo('7'), Foo('first')], ...]我想在argparse中执行转换+验证。有可能吗?你知道吗


Tags: 字符串nameaddparser列表foomyargparse
1条回答
网友
1楼 · 发布于 2024-04-19 19:19:01

这就是你要找的吗?作为记录,我同意在解析之后验证更简单更清晰。你知道吗

import argparse


class foo():
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

class CustomAction(argparse.Action):
    def __call__(self, parser, namespace, values, option_string=None):
        foos.append(foo(*values))

foos = []
parser = argparse.ArgumentParser()
parser.add_argument(' foo', action=CustomAction, default=[], nargs=3)
parser.parse_args()

for x in foos:
    print(x.a, x.b, x.c)

相关问题 更多 >