argparse命令行解析模块


  • argparse命令行解析模块
    • 基本用法
    • ArgumentParser对象
    • add_argument()方法
    • parse_args()方法
    • 其他工具
    • 官方文档

argparse命令行解析模块 导入包
import argparse
基本用法
import argparse# 导入包 parser = argparse.ArgumentParser() # 构造解析器对象 parser.add_argument("echo") # 添加属性 args = parser.parse_args() # 解析参数 print(args.echo) # 获取输入的参数

ArgumentParser对象 【argparse命令行解析模块】class 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)
PROG -程序的名称(默认:sys.argv[0])
usage - 描述程序用法的字符串(默认值:从添加到解析器的参数生成)
description - 参数help之前显示的文本(默认值:none)
epilog - 参数help后显示的文本(默认值:none)
parents - ArgumentParser还应包含其参数的对象列表(相当于继承其他解析器的参数,不能覆盖重新,父解析器指定add_help=False,防止help参数冲突)
formatter_class - 用于自定义帮助输出的类:
  • argparse.RawDescriptionHelpFormatter:表示描述和收尾已经正确格式化
  • argparse.RawTextHelpFormatter
  • argparse.ArgumentDefaultsHelpFormatter
  • argparse.MetavarTypeHelpFormatter
prefix_chars - 前缀可选参数的字符集(默认值:’ - ‘),例如:prefix_chars=’-+’
fromfile_prefix_chars -特定符号(默认值:None),参数中此特定符号加文件名表示读取该文件的内容,作为参数.文件的每行代表一个参数,顺序表示在命令行中的顺序
argument_default -为参数的全局默认值(默认值:None)
conflict_handler - 解决冲突选项的策略(通常是不必要的),conflict_handler=’resolve’
add_help -添加-h/–help选项解析器(默认值:True)
allow_abbrev - 如果缩写是明确的,则允许缩写长选项。(默认值:True)
add_argument()方法 ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
name or flags - 选项字符串的名称或列表,例如foo(位置参数) 或-f, –foo(可选参数)
action - 在命令行遇到此参数时要采取的基本操作类型:
  • ‘store’ - 这只是存储参数的值。这是默认操作
  • ‘store_const’- 它存储const关键字参数指定的值,常用于指定某种标志的可选参数
  • ‘store_true’和’store_false’-默认参数的值分别False和True
  • ‘append’ - 它存储一个列表,并将每个参数值附加到列表中
  • ‘append_const’- 它存储一个列表,并将const关键字参数指定的值附加到列表中
  • ‘count’ - 这计算关键字参数出现的次数
  • ‘help’ - 这将打印当前解析器中所有选项的完整帮助消息,然后退出
  • ‘version’- 这需要调用中version=关键字参数,并打印版本信息并在调用时退出
nargs - 应该使用的命令行参数的数量:
  • N(整数)将命令行中的N个参数一起收集到一个列表中
  • ‘?’。如果可能,将从命令行使用一个参数,并将其作为单个项生成。如果不存在命令行参数,则将生成默认值default 。对于可选参数,还有一种情况 - 选项字符串存在但后面没有命令行参数。在这种情况下,将生成const的值。
  • ‘*’。存在的所有命令行参数都收集到列表中
  • ‘+’。就像’*’,所有存在的命令行参数都被收集到一个列表中。此外,如果不存在至少一个命令行参数,将生成错误消息。
  • argparse.REMAINDER。所有剩余的命令行参数都收集到一个列表中
const - 某些操作和nargs选择所需的常量值。
default - 如果命令行中不存在参数,则生成的值。
type - 应转换命令行参数的类型:
  • open对文件
  • argparse.FileType可以对文件提供更详细的控制,argparse.FileType(‘w’)创建可写文件
choices - 参数允许值的容器。
required - 是否可以省略命令行选项(仅限可选参数)。
help - 对参数的作用的简要描述。
metavar - 用法消息中参数的显示名称。
dest - 要添加到返回的对象的属性的名称
class argparse.Action(option_strings,dest,nargs = None,const = None,default = None,type = None,choices = None,required = False,help = None,metavar = None )
parse_args()方法 ArgumentParser.parse_args(args = None,namespace = None ):将参数字符串转换为对象并将其指定为命名空间的属性。返回填充的命名空间
其他工具 ArgumentParser.add_subparsers([ title ] [,description ] [,prog ] [,parser_class ] [,action ] [,option_string ] [,dest ] [,required ] [,help ] [,metavar ] ):创建子命令
title - 帮助输出中的子解析器组的标题; 默认情况下为“subcommands”(如果提供了description),否则使用title作为位置参数 description - 默认情况下,帮助输出中的子解析器组的描述 None prog - 将使用子命令帮助显示的使用信息,默认情况下,程序的名称和subparser参数之前的任何位置参数 parser_class - 将用于创建子解析器实例的类,默认情况下是当前解析器的类(例如ArgumentParser) action - 在命令行遇到此参数时要采取的基本操作类型 dest - 将存储子命令名称的属性的名称; 默认情况下None,不存储任何值 required - 默认情况下是否必须提供子命令 False。 help - 默认情况下,帮助输出中的子解析器组的帮助None metavar - 在帮助中显示可用子命令的字符串; 默认情况下它是,None并以{cmd1,cmd2,..}形式显示子命令

class argparse.FileType(mode ='r',bufsize = -1,encoding = None,errors = None ):创建一个可以传递给类型参数的对象ArgumentParser.add_argument()。具有 FileType对象作为其类型的参数将打开命令行参数作为具有所请求的模式,缓冲区大小,编码和错误处理的文件
ArgumentParser.add_argument_group(title = None,description = None ):返回一个参数组对象,该对象和ArgumentParser对象类似,选项分组
>>> parser = argparse.ArgumentParser(prog='PROG', add_help=False) >>> group = parser.add_argument_group('group') >>> group.add_argument('--foo', help='foo help')

ArgumentParser.add_mutually_exclusive_group(required=False):创建一个互斥的组,该对象和ArgumentParser对象类似
>>> group = parser.add_mutually_exclusive_group() >>> group.add_argument('--foo', action='store_true') >>> group.add_argument('--bar', action='store_false')

ArgumentParser.set_defaults(** kwargs ):添加属性及值
>>> parser.add_argument('foo', type=int) >>> parser.set_defaults(bar=42, baz='badger')

ArgumentParser.get_default(dest ):获取命名空间属性的默认值
>>> parser.add_argument('--foo', default='badger') >>> parser.get_default('foo')

官方文档 [官方教程翻译]https://blog.ixxoo.me/argparse.html
[官方文档]https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser.add_argument

    推荐阅读