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,来做相关的逻辑,让我们的测试工作更加的有效率。