argparse 模块简介

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技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python网络编程之HTTP客户端模块urllib与urllib3

    Python中有两个常用的HTTP客户端模块:urllib和urllib3。本文将详细讲解这两个模块的用法和区别,并提供一些示例。 1. urllib模块 urllib是Python标准库中的一个HTTP客户端模块,可以用于发送HTTP请求和处理HTTP响应。它包含四个子模块:urllib.request、urllib.parse、urllib.error和…

    python 2023年5月14日
    00
  • python线程池的四种好处总结

    Python线程池的四种好处总结 在本攻略中,我们将介绍Python线程池的四种好处,并提供一些示例。 好处1:提高程序性能 使用线程池可以提高程序性能。线程池可以重复利用线程,避免了线程的创建和销毁,从而减少了系统开销。同时,线程池可以控制线程的数量,避免了线程数量过多导致的系统资源浪费和性能下降。 以下是一个示例,用于演示线程池提高程序性能: impor…

    python 2023年5月15日
    00
  • python实现用于测试网站访问速率的方法

    Python是一种流行的编程语言,它可以用来测试网站的访问速率。以下是使用Python测试网站速度的完整攻略。 步骤1:安装Python 首先,您需要安装Python。请到官方网站(https://www.python.org/downloads/)下载并安装Python的最新版本。 步骤2:导入必需的模块 在Python中,您需要使用标准库中的urllib…

    python 2023年6月3日
    00
  • Python实现七个基本算法的实例代码

    下面是关于“Python实现七个基本算法的实例代码”的完整攻略。 1. 七个基本算法 七个基本法是指排序、查找、字符串、数组、表、树图这七个领域的基本算法。这些算法是计算机科学最基本的算法之一,也是Python开发者必须握的算法之一。 2. 算法实现 下面是使用Python实现七个基本算法的完整代码。 2.1 排序算法 2.1.1 冒泡排序 def bubb…

    python 2023年5月13日
    00
  • 详解Python PIL ImageColor.getrgb()方法

    下面是Python PIL ImageColor.getrgb()方法的完整使用方法: 1. 方法简介 PIL(Python Imaging Library)是Python图像处理库,它提供了丰富的图像处理功能。ImageColor.getrgb()是PIL中的一个方法,用于将一个颜色字符串转换为RGB元组。具体用法如下: ImageColor.getrgb…

    python-answer 2023年3月25日
    00
  • python中的list 查找与过滤方法整合

    以下是“Python中的List查找与过滤方法整合”的完整攻略。 Python中的List查找与过滤方法整合 在Python中,List是一种常见的数据类型,可以存储多个值。在实际开发中,我们经常需要查找或过滤List中的元素。本文将介绍Python中的List查找与过滤方法,并提供一些示例。 查找元素 可以使用in关键字或index()方法来查找List中…

    python 2023年5月13日
    00
  • Python数据结构与算法之列表(链表,linked list)简单实现

    Python数据结构与算法之列表(链表,linkedlist)简单实现 在Python中,列表是一种非常常用的数据类型。除了Python内置的列表,还可以使用链表(linkedlist)来实现列表。链表是一种线性数据结构,由一系列节点组成,每个节点包数据和指向下一个节点的指针。在本文中,我们将详细介绍如何使用Python实现链表,并演示如何使用链实现列表。 …

    python 2023年5月13日
    00
  • python排序算法之希尔排序

    Python排序算法之希尔排序 简介 希尔排序(Shell sort)是插入排序的一种高效的改进算法,也被称为“缩小增量排序”。 希尔排序相比于插入排序,主要是通过将序列分割成若干个子序列,对每个子序列进行直接插入排序,使得间隔某个“增量”的元素为有序,再将子序列合并,使得整个序列有序。 实现步骤 确定增量序列d。 按照增量序列将列表分成若干子序列。 对子序…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部