python-argparse模块

2022-07-21 15:06:35 浏览数 (2)

argparse 是python自带命令行参数解析包,可以用来方便地读取命令行参数,我们常见的pytest、unittest等单元测试框架的命令行参数,也是通过argparse模块实现的。

一、使用的基本框架

创建一个解析器 --》添加相关参数 --〉解析参数

代码语言:javascript复制
#!/usr/bin/python
# -*- coding: utf-8 -*-
import argparse

parser = argparse.ArgumentParser(description="demo")
parser.add_argument('integers', metavar='N', type=int, nargs=' ', help='an integer for accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max,
                    help="sum the integers,default find the max")
args = parser.parse_args()

print(args.accumulate(args.integers))

我们通过控制台 输入 python3 argsparser_demo.py --help,我们可以看到相关说明

输入其他,可以计算参数的和计算出它们的最大值

二、ArgumentParser对象

代码语言:javascript复制
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
        - 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的构造函数,我们一般用的最多的参数是

prog:程序的名字,默认是sys.argv[0]

description:描述,描述这个argumentparser具体是什么作用

prefix_chars:命令的前缀

一切的命令都需要先创建一个参数解析器,然后通过给该解析器添加参数

三、add_argument()方法

解析器的add_argument主要是添加相关的命令参数

代码语言:javascript复制
    def add_argument(self, *args, **kwargs):
        """
        add_argument(dest, ..., name=value, ...)
        add_argument(option_string, option_string, ..., name=value, ...)
        """

常用的参数:

name:命令行的参数,用来标记命令,比如-t ,--f

action:是说明该参数的存储类型,有store、const_store等

nargs: 来说明命令行参数的个数

const:根据action和nargs生成一个常量

default:如果命令没有传,则生成默认值

type:参数的类型

dest:参数的属性,通过parse_args()

help:显示参数帮助

在一些日常工作中,我们可以通过parser.parse_args()返回的参数,取参数的属性即dest,来做相关的逻辑,让我们的测试工作更加的有效率。

0 人点赞