argparse 模块使编写用户友好的命令行界面变得更容易.程序只需定义好它要求的参数,然后argparse将负责如何从sys.argv中解析出这些参数。argparse模块还会自动生成帮助和使用信息并且当用户赋给程序非法的参数时产生错误信息。
class argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars=’-‘, fromfile_prefix_chars=None, argument_default=None, conflict_handler=’error’, add_help=True, allow_abbrev=True)
参数:
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
参数
Action类
class argparse.Action(option_strings, dest, nargs=None, const=None, default=None, type=None, choices=None, required=False, help=None, metavar=None)
将参数字符串转换成对象并设置成命名空间的属性。返回构成的命名空间。
之前对add_argument() 的调用完全决定了创建什么对象以及如何设置。
选项值语法,parse_args()方法支持几种指定一个选项的值的方法:
无效参数
在解析命令行的同时,parse_args()会检查各种错误,包括有歧义的选项、不合法的类型、不合法的选项、错误的位置参数个数等等。当它遇到此类错误时,会退出并跟随用法信息一起打印出错误。
参数包含“ - ”
parse_args()方法每当用户犯了明确的错误时会努力给出错误信息,但是有些情况天生就有歧义。例如,命令行参数-1既可以是想指明一个选项也可以是想提供一个位置参数。这里parse_args()会非常小心:位置参数只有在它们看上去像负数且解析器中没有选项看上去是负数时才可以以-开始。
如果你有必须以- 开始的位置参数且不是负数,你可以插入伪参数’–’告诉parse_args()其后的所有内容都为位置参数。
参数缩写(前缀匹配)
参数不来自sys.argv
有时候可能需要ArgumentParser解析的参数不是来自sys.argv。这可以通过传递一个字符串列表给parse_args()来完成
parse_args() 默认使用的简单的类,用于创建一个保存属性的对象并返回该对象。
有时可能需要让ArgumentParser分配属性给一个已经存在的对象而不是一个新的Namespace对象。这可以通过指定namespace=关键字参数达到。
其它实用工具
ArgumentParser.add_subparsers([title][, description][, prog][, parser_class][, action][, option_string][, dest][, help][, metavar])
class argparse.FileType(mode=’r’, bufsize=-1, encoding=None, errors=None)
ArgumentParser.add_argument_group(title=None, description=None)
ArgumentParser.add_mutually_exclusive_group(required=False)ArgumentParser.set_defaults(**kwargs)
打印帮助
ArgumentParser.parse_known_args(args=None, namespace=None)
ArgumentParser.convert_arg_line_to_args(arg_line)
ArgumentParser.exit(status=0, message=None)
ArgumentParser.error(message)