Python argparse dict arg

前端 未结 9 1679
不知归路
不知归路 2021-02-01 04:31

I want to receive a dict(str -> str) argument from the command line. Does argparse.ArgumentParser provide it? Or any other library?

For the

9条回答
  •  一生所求
    2021-02-01 04:58

    Python one-line argparse dictionary arguments argparse_dictionary.py

    # $ python argparse_dictionary.py --arg_dict=1=11,2=22;3=33 --arg_dict=a=,b,c=cc,=dd,=ee=,
    # Namespace(arg_dict={'1': '11', '2': '22', '3': '33', 'a': '', 'c': 'cc', '': 'dd'})
    
    import argparse
    
    arg_parser = argparse.ArgumentParser()
    arg_parser.add_argument(
        '--arg_dict',
        action=type(
            '', (argparse.Action, ),
            dict(__call__=lambda self, parser, namespace, values, option_string: getattr(
                namespace, self.dest).update(
                    dict([
                        v.split('=') for v in values.replace(';', ',').split(',')
                        if len(v.split('=')) == 2
                    ])))),
        default={},
        metavar='KEY1=VAL1,KEY2=VAL2;KEY3=VAL3...',
    )
    print(arg_parser.parse_args())
    

提交回复
热议问题