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
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=关键字参数,并打印版本信息并在调用时退出
- N(整数)将命令行中的N个参数一起收集到一个列表中
- ‘?’。如果可能,将从命令行使用一个参数,并将其作为单个项生成。如果不存在命令行参数,则将生成默认值default 。对于可选参数,还有一种情况 - 选项字符串存在但后面没有命令行参数。在这种情况下,将生成const的值。
- ‘*’。存在的所有命令行参数都收集到列表中
- ‘+’。就像’*’,所有存在的命令行参数都被收集到一个列表中。此外,如果不存在至少一个命令行参数,将生成错误消息。
- argparse.REMAINDER。所有剩余的命令行参数都收集到一个列表中
default - 如果命令行中不存在参数,则生成的值。
type - 应转换命令行参数的类型:
- open对文件
- argparse.FileType可以对文件提供更详细的控制,argparse.FileType(‘w’)创建可写文件
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
推荐阅读
- Quartz|Quartz 源码解析(四) —— QuartzScheduler和Listener事件监听
- Java内存泄漏分析系列之二(jstack生成的Thread|Java内存泄漏分析系列之二:jstack生成的Thread Dump日志结构解析)
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)
- Android系统启动之init.rc文件解析过程
- 小程序有哪些低成本获客手段——案例解析
- 用Go构建区块链——3.持久化和命令行
- Spring源码解析_属性赋值
- Android下的IO库-Okio源码解析(一)|Android下的IO库-Okio源码解析(一) 入门
- 08_JVM学习笔记_类命名空间解析
- WebSocket|WebSocket 语法解析