argparse 模块简介

yizhihongxing

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实现读取大文件并逐行写入另外一个文件

    当文件过大时,将整个文件读取并处理会导致内存爆炸。因此在处理大文件时,需要一行一行地处理,这样可以在占用比较小的内存情况下完成数据处理。以下是实现读取大文件并逐行写入另外一个文件的攻略: 1. 打开文件 首先需要打开待读取的大文件和待写入的文件,使用open()函数即可打开文件,常用参数有文件名、打开模式。对于大文件来说,还需要设置缓冲区大小参数,即buff…

    python 2023年6月5日
    00
  • Python中str.format()详解

    Python中str.format()详解 在Python中,str.format()是一种格式化字符串的方法。使用这个方法可以方便地将变量、数字、字符串等内容插入到一个带有特定格式的字符串中。 基本用法 str.format()方法可以在一个字符串中插入变量或者表达式,使用{}作为占位符。例如: name = "Alice" age =…

    python 2023年6月3日
    00
  • Python常用的模块和简单用法

    Python是一门功能强大的编程语言,其高效和易学的特点使其受到世界各地程序员的欢迎。Python有着丰富的标准库和第三方模块,这些模块大大简化了我们的编程工作。 下面我们来讲解一些常用的Python模块和其简单用法。 常用模块及用法 os os模块是Python标准库中的一个模块,其提供了很多跨平台的操作系统功能。比如文件路径的操作、获取环境变量等。 其中…

    python 2023年5月30日
    00
  • Pytorch中的数据集划分&正则化方法

    以下是“PyTorch中的数据集划分&正则化方法”的完整攻略: 一、问题描述 在PyTorch中,数据集划分和正则化是深度学习中非常重要的步骤。本文将详细讲解PyTorch中的数据集划分和正则化方法,并提供两个示例说明。 二、解决方案 2.1 数据集划分 在PyTorch中,我们可以使用torch.utils.data.random_split函数将…

    python 2023年5月14日
    00
  • python爬虫scrapy框架之增量式爬虫的示例代码

    针对这个主题,我可以提供一份针对“python爬虫scrapy框架之增量式爬虫的示例代码”的完整攻略。 什么是增量式爬虫? 在介绍示例代码之前,我们先来了解一下什么是“增量式爬虫”。简单来说,增量式爬虫就是针对已经抓取过的内容进行增量的、增量的更新;只爬取新加入的,而不是全盘的重新抓取。对于时间线较为敏感的数据应用,增量式爬虫可以减少开销,提高数据更新速度。…

    python 2023年5月14日
    00
  • Python聚类算法之DBSACN实例分析

    Python聚类算法之DBSCAN实例分析 DBSCAN是一种基于密度的聚类算法,可以自动发现任意形状的簇,并能够在噪声数据中识别出离群值。本文将详细讲解Python实现DBSCAN算法的整个攻略,包括算法原理、实现过程和示例。 算法原理 DBSCAN算法的基本思想是将数据点分为核心点、边界点和噪声点。核点是指在半径为ε内至少有minPts个点的点,边界点是…

    python 2023年5月14日
    00
  • python实现录屏功能(亲测好用)

    下面是详细的攻略: Python实现录屏功能(亲测好用) 介绍 在某些情况下,我们需要录制屏幕上的操作过程,以便于之后进行回放或者与别人分享。Python 可以方便地实现屏幕录制功能,本文将介绍如何使用 Python 和一些第三方库实现录屏功能。 实现步骤 安装必要的库和软件 首先需要安装以下的库和软件: Python3 Pygame PIL ffmpeg …

    python 2023年5月19日
    00
  • Python实现运行其他程序的四种方式实例分析

    Python实现运行其他程序的四种方式实例分析 本文将介绍在Python中运行其他程序的四种常见方式。这些方法适用于需要自动化执行操作的情况。 一、使用os.system函数 os.system()函数可用于在Python中执行外部命令。只需传递要执行的命令字符串即可。 示例一 在此示例中,我们将使用os.system()函数打开一个文本文件。 import…

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