argparse 模块定义了如何从 sys.argv 解析出参数, 并自动生成帮助和使用手册,以及在用户给程序传入无效参数时报出错误信息。
文章目录
前言:argparse命令行参数解析器,个人认为它除了能统一规划一个程序的输入接口外,于算法或项目本身没有什么实际意义。只是总在别人项目里总是看到使用它,而python恰好也有这个解析器模块,所以就来了解一下,并记录在此。
一、关于argparse模块
最常见的 parser( 解析器),是把程序文本转换成编译器内部的一种叫做“抽象语法树”(AST)的数据结构。在我看来,它用来统一输入的格式,和提示输入参数要求和错误信息。
python自带命令行参数解析器argparser,关于argparse:
- 处理可选参数和位置参数(- handles both optional and positional arguments)
- 产生高度有用的使用信息(- produces highly informative usage messages)
- 支持分派给子解析器的解析器(- supports parsers that dispatch to sub-parsers)
ArgumentParser对象:包含将命令行解析成 Python 数据类型所需的全部信息;add_argument()方法: 给一个 ArgumentParser 对象添加程序参数信息;parse_args()方法: 解析参数.【ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。】
二、argparse源码:
class ArgumentParser(_AttributeHolder, _ActionsContainer):
"""Object for parsing command line strings into Python objects.
Keyword Arguments关键参数:
- prog -- The name of the program 程序名(default: sys.argv[0])
- usage -- A usage message (default: auto-generated from arguments)
- description -- A description of what the program does描述程序的功能
- epilog -- Text following the argument descriptions参数描述文本
- parents父解析器 -- Parsers whose arguments should be copied into this one
- formatter_class -- HelpFormatter class for printing help messages打印帮助消息
- prefix_chars -- Characters that prefix optional arguments可选前缀字符
- fromfile_prefix_chars -- Characters that prefix files containing为包含某字符的文件添加前缀字符
additional arguments附加参数
- argument_default -- The default value for all arguments所有参数的默认值
- conflict_handler -- String indicating how to handle conflicts指示如何处理冲突的字符串
- add_help -- Add a -h/-help option【是否添加help选项】
- allow_abbrev -- Allow long options to be abbreviated省略 unambiguously
"""
def __init__(self,
prog=None,
usage=None,
description=None,
epilog=None,
parents=[],
formatter_class=HelpFormatter,
prefix_chars='-',
fromfile_prefix_chars=None,
argument_default=None,
conflict_handler='error',
add_help=True,
allow_abbrev=True):
ArgumentParser继承自_AttributeHolder和 _ActionsContainer。
ArgumentParser模块包含以下公共类:
- ArgumentParser:命令行解析的主要入口点。
- ArgumentError:ArgumentParser对象引发的异常
解析器出现错误时,解析命令行被ArgumentParser捕获并发出作为命令行消息。 - FileType:用于定义要创建的文件类型的工厂。
- Action:解析器动作的基类。通常,通过将诸如“ store_true”或“ append_const”之类的字符串传递给add_argument()的action =参数来选择Action。但是,为了更好地自定义ArgumentParser动作,可以定义Action的子类并将其作为action =参数传递。
- HelpFormatter,RawDescriptionHelpFormatter,RawTextHelpFormatter,ArgumentDefaultsHelpFormatter: 格式化程序类,可以作为formatter_class =参数传递给ArgumentParser构造函数。 HelpFormatter是默认设置,RawDescriptionHelpFormatter和RawTextHelpFormatter告诉解析器不要更改帮助文本的格式,并且ArgumentDefaultsHelpFormatter将有关参数默认值的信息添加到帮助中。
本模块中的所有其他类均被视为实现细节。
(注意,HelpFormatter和RawDescriptionHelpFormatter仅作为对象名称被视为公共名称-格式化程序对象的API为实现详细信息)
__all__ = [
'ArgumentParser',
'ArgumentError',
'ArgumentTypeError',
'FileType',
'HelpFormatter',
'ArgumentDefaultsHelpFormatter',
'RawDescriptionHelpFormatter',
'RawTextHelpFormatter',
'MetavarTypeHelpFormatter',
'Namespace',
'Action',
'ONE_OR_MORE',
'OPTIONAL',
'PARSER'

本文介绍Python的argparse模块,用于解析命令行参数。argparse模块能够处理可选参数和位置参数,提供高度有用的使用信息,并支持子解析器。文章详细解释了ArgumentParser类及其add_argument方法的工作原理。
最低0.47元/天 解锁文章
736

被折叠的 条评论
为什么被折叠?



