1、介绍
该argparse模块使编写用户友好的命令行界面变得容易,该程序定义所需的参数,argparese可以找出并介意出这些参数,当用户提供无效参数时,该模块还会自动生成帮助和使用情况并发出错误。
[官方文档]:https://docs.python.org/3/library/argparse.html
2、一个简单的例子
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("integers")
parser.add_argument("-n", "--num", type=int, help="输入数字")
args = parser.parse_args()
print(args.integers)
print("num ={0}".format(args.num))
python test3.py 1111 --n 2222
输出:
1111
num =2222
3、详细介绍
1.1、创建解析器
使用的第一步argparse是创建一个 ArgumentParser对象:
parser = argparse.ArgumentParser()
该ArgumentParser对象将包含将命令行解析为Python数据类型所需的所有信息。
1.2 添加参数
ArgumentParser通过调用add_argument()方法来填充有关程序参数的信息。通常,这些调用说明ArgumentParser如何在命令行中获取字符串并将其转换为对象。该信息在parse_args()被调用时被存储和使用。例如:
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
后来,调用parse_args()将返回一个对象有两个属性,integers和accumulate。该integers属性将是一个或多个int的列表,并且该accumulate属性将是sum()函数(如果–sum在命令行中指定)或max()函数(如果未在命令行中指定)。
1.3 解析参数
ArgumentParser通过parse_args()方法解析参数 。这将检查命令行,将每个参数转换为适当的类型,然后调用适当的操作。在大多数情况下,这意味着Namespace将根据从命令行外解析的属性来构建一个简单的对象:
>>>parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
在脚本中,parse_args()通常不会调用任何参数,并且ArgumentParser会自动从中确定命令行参数sys.argv。
2.1 ArgumentParser对象
类argparse.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, allow_abbrev=True)
创建一个新ArgumentParser对象。所有参数都应作为关键字参数传递。
- PROG -程序的名称(默认:sys.argv[0])
- usage -描述程序使用情况的字符串(默认值:从添加到解析器的参数生成)
- description -在参数帮助前显示的文本(默认值:无)
- epilog -在参数help之后显示的文本(默认值:无)
- parents - ArgumentParser还应包含其参数的对象列表
- formatter_class-用于定制帮助输出的类
- prefix_chars-前缀可选参数的字符集(默认值:“-”)
- fromfile_prefix_chars-该字符集的前缀文件从额外的参数应该读(默认值:None)
- argument_default -为参数的全局默认值(默认值:None)
- conflict_handler -解决冲突的可选内容的策略(通常是不必要的)
- add_help -添加-h/–help选项解析器(默认值:True)
- allow_abbrev-如果缩写是明确的,则允许缩写长选项。(默认值:True)
在版本3.5中进行了更改:添加了allow_abbrev参数。