【python模块】argparse

文章目录

  • argparse模块介绍
  • 基本用法
  • add_argument()


argparse模块介绍

argparse 模块是 Python 标准库中的一个用于编写用户友好的命令行接口(CLI)的模块。它允许程序定义它所需要的命令行参数,然后 argparse 会自动从 sys.argv 解析出那些参数。argparse 自动生成帮助和使用手册,并在用户给程序传入无效参数时报错。

使用 argparse 可以让你的程序更加灵活和易于使用,因为它允许用户通过命令行参数来定制程序的行为,而不是硬编码在程序中。这对于需要处理不同输入数据或配置选项的脚本尤其有用。

基本用法

下面是如何创建一个基本的命令行接口的示例:

  1. 导入模块:首先,需要导入 argparse 模块。
import argparse
  1. 创建解析器:使用 ArgumentParser 类创建一个新的解析器对象。你可以指定程序的描述,这将在帮助信息中显示。
parser = argparse.ArgumentParser(description='这是一个命令行工具的示例。')
  1. 添加参数:使用 add_argument() 方法定义程序接受的命令行参数。这个方法接受多个参数来指定如何解析命令行参数,下文将详细介绍。
# 添加一个位置参数
parser.add_argument('input', help='输入文件的路径')# 添加一个可选参数,带有一个短名称和一个长名称
parser.add_argument('-o', '--output', help='输出文件的路径', default='output.txt')# 添加一个开关参数
parser.add_argument('--verbose', action='store_true', help='增加输出的详细程度')
  1. 解析参数:使用 parse_args() 方法解析参数。这个方法会从 sys.argv 中读取参数,并根据之前定义的规则进行解析。
args = parser.parse_args()
  1. 使用参数:解析后的参数存储在 args 对象中,你可以根据需要使用它们。
if args.verbose:print('详细模式已开启')print(f'输入文件:{args.input}')
if hasattr(args, 'output'):print(f'输出文件:{args.output}')

将以上代码片段组合起来,我们得到一个完整的示例脚本:

import argparse# 创建解析器
parser = argparse.ArgumentParser(description='这是一个命令行工具的示例。')# 添加参数
parser.add_argument('input', help='输入文件的路径')
parser.add_argument('-o', '--output', help='输出文件的路径', default='output.txt')
parser.add_argument('--verbose', action='store_true', help='增加输出的详细程度')# 解析参数
args = parser.parse_args()# 使用参数
if args.verbose:print('详细模式已开启')print(f'输入文件:{args.input}')
if hasattr(args, 'output'):print(f'输出文件:{args.output}')

要运行这个脚本并传入参数,你可以在命令行中这样做:

python your_script.py example.txt -o result.txt --verbose

这将输出:

详细模式已开启
输入文件:example.txt
输出文件:result.txt

ArgumentParser 类提供了丰富的功能来帮助你构建复杂的命令行接口,包括但不限于子命令解析、类型检查、默认值设置等。

add_argument()

add_argument() 方法是 argparse 模块中最核心的方法之一,用于向程序中添加命令行参数。这个方法非常灵活,允许你指定参数的名称、类型、是否必需、默认值、帮助信息等。下面是对 add_argument() 方法中一些常用参数的详细介绍:

  1. name_or_flags
  • 类型:字符串或字符串列表
  • 描述:参数的名称或一组名称(也称为标志)。如果是一个字符串,并且以 --- 开头,那么它将被视为一个标志(flag)。如果是一个字符串列表,列表中的每个元素都将被视为一个单独的标志,它们共享相同的参数值。
  • 示例'--foo'['-f', '--foo']
  1. action
  • 类型:字符串或 argparse.Action 子类
  • 描述:当解析到参数时,应该采取的基本动作类型。常见的动作包括 'store'(存储值)、'store_true'(表示布尔值 True)、'store_false'(表示布尔值 False)、'append'(将值追加到列表中)等。也可以自定义动作类型。
  • 示例'store_true'
  1. nargs
  • 类型:整数或 '*', '?', '+'
  • 描述:命令行参数应该消耗的输入数量。'*' 表示消耗所有剩余的命令行参数,'?' 表示参数是可选的(并且最多只能有一个值),'+' 表示参数至少需要一个值。
  • 示例'+'
  1. const
  • 类型:任意
  • 描述:与 actionnargs 一起使用时,const 提供了当参数不存在但需要一个默认值时的值。
  • 示例:对于 'store_const''append_const' 动作,const 指定了要存储或追加的常量值。
  1. default
  • 类型:任意
  • 描述:如果命令行中没有提供该参数,则使用的默认值。
  • 示例10
  1. type
  • 类型:可调用的(如函数、类型或 argparse.FileType
  • 描述:命令行参数应该被转换成的类型。可以是 Python 的内置类型(如 intfloatstr),也可以是自定义的类型转换函数。
  • 示例int
  1. choices
  • 类型:容器
  • 描述:参数允许的值的容器。如果命令行中的值不在此容器中,则抛出 argparse.ArgumentError
  • 示例['yes', 'no', 'maybe']
  1. required
  • 类型:布尔值
  • 描述:是否必须提供该命令行参数。
  • 示例True
  1. help
  • 类型:字符串
  • 描述:参数的简短描述,用于生成帮助和使用手册。
  • 示例"Enable verbose mode"
  1. metavar
  • 类型:字符串
  • 描述:在帮助消息中用于参数值的名称。如果参数有多个值(如由 nargs 指定),则可以使用 {0}{1} 等来指定每个值的名称。
  • 示例"FILE"

代码示例

import argparseparser = argparse.ArgumentParser(description='Example of add_argument()')# 添加一个简单的参数
parser.add_argument('--count', type=int, default=1, help='number of items')# 添加一个布尔参数
parser.add_argument('--verbose', action='store_true', help='increase output verbosity')# 添加一个具有多个值的参数
parser.add_argument('--files', nargs='+', type=argparse.FileType('r'), help='input files')# 解析命令行参数
args = parser.parse_args()# 使用参数
print(f"Count: {args.count}")
print(f"Verbose: {'on' if args.verbose else 'off'}")
for file in args.files:print(f"File: {file.name}")

在这个示例中,我们添加了三个参数:--count 是一个简单的整数参数,--verbose 是一个布尔参数,--files 是一个接受多个文件路径的参数。


世间文字八万个,唯有一字最是能杀人:情字可误人,情字可杀人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP粘包解决方法

一. 产生原因及解决方法 产生原因:TCP是面向连接、基于字节流的协议,其无边界标记。当服务端处理速度比不其接收速度时,就很容易产生粘包现象。 解决方法:目前主要有两种解决方法,一个是在内容中添加分割标识&#xf…

人脸识别考勤系统

人脸识别考勤系统是一种利用生物识别技术进行自动身份验证的现代解决方案,它通过分析和比对人脸特征来进行员工的出勤记录。这种系统不仅提升了工作效率,还大大减少了人为错误和欺诈行为的可能性。 一、工作原理 人脸识别考勤系统的核心在于其生物识别…

深入剖析Python中的Pandas库:通过实战案例全方位解读数据清洗与预处理艺术

引言 随着大数据时代的到来,数据的质量直接影响到最终分析结果的可靠性和有效性。在这个背景下,Python凭借其灵活强大且易于上手的特点,在全球范围内被广泛应用于数据科学领域。而在Python的数据处理生态中,Pandas库无疑是最耀眼…

高级策略:解读 SQL 中的复杂连接

了解基本连接 在深入研究复杂连接之前,让我们先回顾一下基本连接的基础知识。 INNER JOIN:根据指定的连接条件检索两个表中具有匹配值的记录。LEFT JOIN:从左表检索所有记录,并从右表中检索匹配的记录(如果有&#x…

管道支架安装

工程结构施工完毕后,系统管道安装完毕后的第一步任务就是管道支架的制作安装,作为对管道固定和承重作用至关重要的支、托、吊架,有些项目部在施工中却往往因为对它们的重要性认识不足,因存在侥幸心里或经验主义,导致支…

NIO为什么会导致CPU100%?

1. Java IO 类型概览 BIO:阻塞I/O,每个连接一个线程,简单但遇到高并发时性能瓶颈明显。NIO:非阻塞I/O,JDK 1.4引入,一个线程处理多个IO操作,提高资源利用率和系统吞吐量。AIO:异步I…

技术探索:利用Python库wxauto实现Windows微信客户端的全面自动化管理

项目地址:github-wxauto 点击即可访问 项目官网:wxauto 点击即可访问 😂什么是wxauto? wxauto 是作者在2020年开发的一个基于 UIAutomation 的开源 Python 微信自动化库,最初只是一个简单的脚本,只能获取消息和发送…

kpatch Patch Author Guide

kpatch Patch Author Guide Because kpatch-build is relatively easy to use, it can be easy to assume that a successful patch module build means that the patch is safe to apply. But in fact that’s a very dangerous assumption. 由于 kpatch-build 比较容易使用…

精通Spring Cloud: Spring Cloud Config面试题详解及参考答案(3万字长文)

解释Spring Cloud Config的基本功能和它在微服务架构中的作用 Spring Cloud Config是一个用于集中管理和外部化配置的工具。其核心功能在于允许开发者将配置从代码中分离出来,放置于一个中央存储库中,从而简化了配置管理,提高了应用程序的可维护性和灵活性。在微服务架构中…

论文的3个创新点方向

1、数据分析创新 通过对现有数据的分析,发现新的模式或趋势,提出新的假设或理论的方法。随着大数据和人工智能技术的发展,数据分析在科学研究中也有很多的创新。 可以通过实验、调查、模拟、现场等方式收集相关数据。数据的质量和数量是数据…

掌握MySQL基础命令:数据更新操作详细操作(数据的增删改)

MySQL数据修改是指使用SQL语句(如UPDATE、INSERT、DELETE)对数据库表中的数据进行更改、添加或删除的操作,常见的操作包括更新表中的记录、插入新记录以及删除现有记录 。 一、数据插入 1插入完整的数据记录 2插入非完整的数据记录 3插入多…

探讨SpringMVC的工作原理

SpringMVC是Spring框架的一部分,是用于构建Web应用程序的一个模块。SpringMVC遵循Model-View-Controller(MVC)设计模式,帮助开发者将应用程序的业务逻辑、控制逻辑和表示层分离。以下是SpringMVC的工作原理及其核心组件的详细介绍…

Oracle数据库导入导出详解

在数据库管理和维护过程中,数据的导入与导出是常见的需求,特别是在数据迁移、备份或数据分析等场景下尤为重要。Oracle数据库作为企业级的数据库管理系统,提供了强大的数据导入导出工具。本文将详细介绍Oracle数据库中数据导入和导出的常用方…

macOS使用Karabiner-Elements解决罗技鼠标G304连击、单击变双击的故障

记录一下罗技鼠标G304单击变双击的软件解决过程和方案(适用于macOS, 如果是Windows,使用AutoHotKey也有类似解决办法、方案,改日提供): 背景:通过罗技Logitech G HUB软件对罗技的游戏鼠标侧键b…

摄像机反求跟踪软件/插件 Mocha Pro 2024 v11.0.2 CE Win

AE/PR/OFX/达芬奇/AVX插件 | 摄像机反求跟踪软件Mocha Pro 2024 v11.0.2 CE Win-PR模板网 Mocha Pro 软件(插件),用于平面运动跟踪、3D跟踪、动态观察、对象移除、图像稳定和PowerMesh有机扭曲跟踪等功能。整合了SynthEyes核心的3D跟踪算法,能够快速自动…

k8s-第四节-Service

Service Service 通过 label 关联对应的 PodServcie 生命周期不跟 Pod 绑定,不会因为 Pod 重创改变 IP提供了负载均衡功能,自动转发流量到不同 Pod可对集群外部提供访问端口集群内部可通过服务名字访问 创建 Service kubectl apply -f service.yamlkub…

math.round和math.floor相互转化

在Python中,math.round() 函数用于对浮点数进行四舍五入到最接近的整数,而 math.floor() 函数则是直接取浮点数的整数部分,即向下取整。如果你需要在 math.round() 和 math.floor() 之间进行某种“相互转化”,实际上,你…

003-基于Sklearn的机器学习入门:回归分析(上)

本节及后续章节将介绍机器学习中的几种经典回归算法,所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇,将介绍基础的线性回归方法,包括线性回归、逻辑回归、多项式回归和岭回归等。 2.1 回归分析概述 回归(Regression&…

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法

11 - matlab m_map地学绘图工具基础函数 - 绘制航迹、椭圆、风向玫瑰图和特定的圆形区域的有关函数及其用法 0. 引言1. 关于m_track2. 关于m_range_ring3. 关于m_ellipse4. 关于m_windrose5. 结语 0. 引言 本篇介绍下m_map中绘制航迹图函数(m_track)、绘…

python 发布应用程序包

文章目录 发布python包toml配置文件构建发布python包 官方文档参考 将自己的python项目发布成源码包或者wheel二进制包,供其他开发者使用。 方式: 使用py工具; distutils,该工具的使用已过时;setuptools,常用方式;wheel,在setuptools的基础上添加了 bdist_wheel, …