argparse--命令行参数解析器详细使用方法

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

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)

  1. ArgumentParser 对象:包含将命令行解析成 Python 数据类型所需的全部信息;
  2. add_argument()方法: 给一个 ArgumentParser 对象添加程序参数信息;
  3. 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模块包含以下公共类:

  1. ArgumentParser:命令行解析的主要入口点。
  2. ArgumentError:ArgumentParser对象引发的异常
    解析器出现错误时,解析命令行被ArgumentParser捕获并发出作为命令行消息。
  3. FileType:用于定义要创建的文件类型的工厂。
  4. Action:解析器动作的基类。通常,通过将诸如“ store_true”或“ append_const”之类的字符串传递给add_argument()的action =参数来选择Action。但是,为了更好地自定义ArgumentParser动作,可以定义Action的子类并将其作为action =参数传递。
  5. 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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏常青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值