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语言实现将图片转化为html页面

    将图片转化为 HTML 页面可以使用多种方法,包括使用 Python 的 Pillow 库、使用第三方工具等。以下是两个示例,分别使用 Pillow 库和第三方工具实现将图片转化为 HTML 页面的方法。 使用 Pillow 库实现将图片转化为 HTML 页面 以下是一个简单的示例,可以使用 Pillow 库实现将图片转化为 HTML 页面的方法: from…

    python 2023年5月15日
    00
  • 浅谈Pytorch中的自动求导函数backward()所需参数的含义

    让我为大家详细讲一下PyTorch中的自动求导函数backward()所需参数的含义。 简介 在PyTorch中,自动求导是非常重要的特性。通过它,我们可以轻松地计算梯度并优化模型。而自动求导函数backward()是其中的核心函数之一。 backward()函数介绍 简述 backward()是计算当前张量在一个标量上的梯度。通常,在计算loss函数的梯度…

    python 2023年5月19日
    00
  • python函数局部变量、全局变量、递归知识点总结

    当我们编写 Python 程序时,变量大多数情况下需要在函数中使用。在 Python 函数中,变量有不同的作用域,因此使用它们需要一些注意事项。此外,递归是 Python 函数中的一项重要特性,能够在特定的场景中解决问题。下面我们将对 Python 函数中的局部变量、全局变量和递归进行详细讲解。 Python 函数中的局部变量和全局变量 Python 中的变…

    python 2023年6月5日
    00
  • Python解析、提取url关键字的实例详解

    Python解析、提取url关键字的实例详解 在Python编程中,有许多函数能够帮助我们处理与URL相关的工作。在这里,我们将介绍一些常用的函数,以及如何使用它们来提取URL以及相关的关键字。 实现步骤 导入所需模块: 可以使用urllib.request模块中的urlopen函数读取网页内容,然后使用 BeautifulSoup 进行解析。在 Pytho…

    python 2023年5月20日
    00
  • 详解Python中openpyxl模块基本用法

    当然,这里就为大家介绍一下”详解Python中openpyxl模块基本用法”的实例教程,希望对大家有所帮助。 1. openpyxl模块介绍 openpyxl是一个Python库,用于处理Excel文档。这个库允许您读取和写入Excel xlsx/xlsm/xltx/xltm文件,而且还支持公式、图表和一些其他高级特性。 2. 安装openpyxl模块 在命…

    python 2023年5月13日
    00
  • python怎么提高计算速度

    要想提高Python的计算速度,通常可以采用以下几种方式: 1. 使用NumPy NumPy是Python一个常用的高性能科学计算库,它广泛地应用于各种科学计算中,能够提升计算速度。它的优势在于其基于C语言写的底层代码,很大程度上避免了Python解释器的运算速度瓶颈。 例如,假设我们需要求两个数组(x和y)的点积结果,如果使用Python自带的列表进行计算…

    python 2023年6月3日
    00
  • 利用Python将list列表写入文件并读取的方法汇总

    利用Python将list列表写入文件并读取的方法汇总 当我们需要将Python中的list列表写入文件并读取时,可以使用多种方法实现。本文将详细讲解Python中将list列表写入文件并读取的方法,并提供多示例说明。 方法一:使用pickle模块将列表写入文件并读取 Python中的pickle模块可以将Python对象序列化为二进制数据,然后将其写入文件…

    python 2023年5月13日
    00
  • 详解MySQL用事件调度器Event Scheduler创建定时任务

    下面是详解MySQL用事件调度器Event Scheduler创建定时任务的完整攻略: 什么是MySQL事件调度器 MySQL事件调度器(Event Scheduler)是MySQL数据库中的一种内置的定时任务调度器,可以自动执行存储过程、函数或SQL语句,并在指定的时间间隔内进行周期性的重复执行,实现了MySQL数据库的自动化管理和维护。我们可以利用MyS…

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