argparse 模块简介
Python 标准库自带了 argparse 模块,它可以帮助开发者方便地编写命令行接口(CLI)。对于开发者来说,CLI 是执行多数任务的常见方式,例如运行脚本、管理系统等。argparse 模块能够处理 CLI 中的参数解析和帮助文档,让开发者可以轻松创建功能丰富、规范易懂的 CLI。
基本用法
argparse 模块使命令行参数解析变得非常简单。我们从一个简单的例子开始,说明 argparse 应该如何使用。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--name', type=str, help='Your name')
args = parser.parse_args()
print('Hello ' + args.name + '!')
这个例子中,我们创建了一个解析器,然后为其中的参数添加了一个名称(name)和一个类型(str)。然后,我们使用 parse_args()
方法来解析这些参数,并将结果保存到 args
中。最后,我们打印出问候语,其中包含解析后的名称。
在命令行中运行这个脚本的方式可能像下面这样:
$ python hello.py --name Alice
Hello Alice!
在这个例子中,--name
参数告诉那个终端识别名字,然后我们在下一步中引用该参数。
支持的参数类型
argparse 模块支持以下参数类型:
str
- 字符串类型,即默认类型(可以省略)。int
- 整型。float
- 浮点型。complex
- 复数。list
- 列表类型。set
- 集合类型。tuple
- 常数类型。file
- 文件类型。bool
- 布尔类型,可以是--verbose
/--no-verbose
这种习惯用法的变体。
除了这些基本类型,argparse 还支持自定义类型。
示例说明
以下是一些完整的代码示例,它们说明了 argparse 模块的高级用法:
1. 为 CLI 创建帮助文档
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the 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))
在这个示例中,我们创建了一个 CLI,让用户可以输入整数。我们使用 description
参数来指定 CLI 的介绍文本,然后为整数添加了一个名称和一个类型。
在这个例子中,我们示范了两个其他的另类参数。dest
参数可以让你重命名参数名称。action
参数表示在遇到该参数时要执行的动作。
最后,我们使用 parse_args()
方法来获取参数值,并按用户选择的方式对整数执行了相应的计算。
2. 创建操作符命令行
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(title='commands',
description='valid commands',
help='additional help')
subparsers.required = True
parser_add = subparsers.add_parser('add', help='add two numbers')
parser_add.add_argument('num1', type=int, help='the first number')
parser_add.add_argument('num2', type=int, help='the second number')
parser_add.set_defaults(operation=lambda args: args.num1 + args.num2)
parser_sub = subparsers.add_parser('sub', help='subtract two numbers')
parser_sub.add_argument('num1', type=int, help='the first number')
parser_sub.add_argument('num2', type=int, help='the second number')
parser_sub.set_defaults(operation=lambda args: args.num1 - args.num2)
args = parser.parse_args()
print(args.operation(args))
在这个示例中,我们创建了一个 CLI,允许用户对两个数字执行加法或减法操作。我们使用 add_subparsers()
方法创建了子解析器,它允许 CLI 拥有多个操作。
我们注意到,add_subparsers()
方法返回一个新的解析器,因此我们可以对其应用所有支持的方法例如:add_argument()
。然后,我们使用 set_defaults()
方法,为每个子解析器设置不同的操作。
在最后一行,我们使用 operation
参数来获取用户选择的操作方法,并对两个数字执行相应的计算。
这两个示例说明,argparse 模块允许开发者构建复杂的 CLI,包括多个子命令和向导式菜单。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:argparse 模块简介 - Python技术站