Python:使用argparse解析多种数据类型

我尝试使用argparse来学习它如何解析给定列表:


parser = argparse.ArgumentParser()


parser.add_argument('--ls', nargs='*', type=str, default = [])

Out[92]: _StoreAction(option_strings=['--ls'], dest='ls', nargs='*', const=None, default=[], type=<type 'str'>, choices=None, help=None, metavar=None)


args = parser.parse_args("--ls 'tomato' 'jug' 'andes'".split())


args

Out[94]: Namespace(ls=["'tomato'", "'jug'", "'andes'"])


args.ls

Out[96]: ["'tomato'", "'jug'", "'ande'"]


args.ls[0]

Out[97]: "'tomato'"


eval(args.ls[0])

Out[98]: 'tomato'

Q1:上面的作品,但是否有更好的方法来访问列表中的值?


然后我尝试用Dictionary解析给定的字典:


dict_parser = argparse.ArgumentParser()

dict_parser.add_argument('--dict', nargs='*',type=dict,default={})


Out[104]: _StoreAction(option_strings=['--dict'], dest='dict', nargs='*', const=None, default={}, type=<type 'dict'>, choices=None, help=None, metavar=None)


arg2 = dict_parser.parse_args("--dict {'name':'man', 'address': 'kac', 'tags':'don'}")

usage: -c [-h] [--dict [DICT [DICT ...]]]

-c: error: unrecognized arguments: - - d i c t   { ' n a m e ' : ' m a n' ,   ' a d d r e s s ' :   ' k a c' ,   ' t a g s ' : ' d o n ' }

To exit: use 'exit', 'quit', or Ctrl-D.

An exception has occurred, use %tb to see the full traceback.


SystemExit: 2

那是行不通的。Q2:上面的字典如何工作?


Q3:现在我要


python my.py --ls tomato jug andes  --dict {'name':'man', 'address': 'kac', 'tags':'don'}

被解析


我怎么做?


潇潇雨雨
浏览 384回答 2
2回答

萧十郎

import astdict_parser.add_argument('--dict', nargs='*',type=ast.literal_eval,default={})args = dict_parser.parse_args(["--dict", "{'name':'man', 'address': 'kac', 'tags':'don'}"])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python