我尝试使用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())argsOut[94]: Namespace(ls=["'tomato'", "'jug'", "'andes'"])args.lsOut[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'}被解析我怎么做?
2 回答
萧十郎
TA贡献1815条经验 获得超13个赞
import ast
dict_parser.add_argument('--dict', nargs='*',type=ast.literal_eval,default={})
args = dict_parser.parse_args(["--dict", "{'name':'man', 'address': 'kac', 'tags':'don'}"])
添加回答
举报
0/150
提交
取消