当前位置: 首页 > article >正文

Python 标准库——argparse模块

文章目录

  • 前言
  • 一、主要作用
  • 二、基本步骤
    • 1.导入模块
    • 2.创建解析器对象
    • 3.添加参数
    • 4.解析参数
    • 5.使用解析后的参数
    • 6.编写主函数并调用
  • 三、函数示例

前言

argparse 是 Python 标准库中的一个模块,用于编写用户友好的命令行接口。它允许你轻松地定义程序应该接受的命令行参数,并自动生成帮助和使用信息。你通常会使用 argparse.ArgumentParser 类来创建一个解析器对象,然后通过该对象的方法来添加参数和解析命令行输入。

一、主要作用

  • 定义命令行接口:通过ArgumentParser对象,你可以定义你的程序期望从命令行接收哪些参数(如文件名、选项标志、数值等)。
  • 生成帮助和使用信息:argparse会自动为你的程序生成帮助和使用信息,当用户输入不正确的参数或请求帮助时(通常是通过-h或–help选项),这些信息会被打印出来。
  • 解析命令行参数:当用户运行你的程序并提供命令行参数时,argparse会解析这些参数,并根据你定义的规则将它们转换为适当的数据类型(如字符串、整数等)。
  • 处理错误:如果用户提供了不正确的参数(如类型不匹配、缺少必需参数等),argparse会捕获这些错误,并打印出错误消息,而不是让你的程序崩溃。
  • 提供灵活的参数解析:argparse支持位置参数、可选参数(带或不带值)、互斥参数组、默认值和参数类型转换等高级功能。

二、基本步骤

1.导入模块

import argparse

2.创建解析器对象

parser = argparse.ArgumentParser(description="这是一个使用 argparse 的示例程序。")

使用 argparse.ArgumentParser() 来创建一个解析器对象。你可以传递一个描述字符串,该字符串将在帮助信息中显示。

3.添加参数

parser.add_argument('filename', type=str, help='输入文件的名称')  
parser.add_argument('--verbose', action='store_true', help='增加输出的详细程度')

使用 add_argument() 方法来添加你希望程序接受的命令行参数。你可以指定参数的类型、是否必需、默认值等。

4.解析参数

args = parser.parse_args()

使用 parse_args() 方法来解析命令行输入的参数。这将返回一个包含所有解析后的参数值的命名空间对象。

5.使用解析后的参数

print(f"文件名: {args.filename}")  
if args.verbose:  
    print("详细模式已启用")

现在你可以通过 args 对象来访问解析后的参数值。

6.编写主函数并调用

def main():  
    # 上述步骤 2-5 的代码  
    ...  

if __name__ == "__main__":  
    main()

通常,我们会将这些步骤放在一个名为 main() 的函数中,并在脚本的最后调用它,以确保当脚本作为主程序运行时才会执行这些代码。

三、函数示例

以下是一个完整的示例程序,它接受一个文件名和一个可选的详细模式标志,并打印文件的内容:

import argparse  
  
def main():  
    # 创建ArgumentParser对象  
    parser = argparse.ArgumentParser(description="读取文件并打印其内容,可选地增加详细输出。")  
      
    # 添加命令行参数  
    parser.add_argument('filename', type=str, help='要读取的文件名')  
    parser.add_argument('--verbose', action='store_true', help='增加详细输出')   
      
    # 解析命令行输入  
    args = parser.parse_args()  
      
    # 使用解析后的参数  
    try:  
        with open(args.filename, 'r') as file:  
            content = file.read()  
            print(content)  
            if args.verbose:  
                print(f"文件 {args.filename} 已成功读取并打印")  
    except FileNotFoundError:  
        print(f"错误: 文件 {args.filename} 未找到")  
  
# 检查脚本是否作为主程序运行  
if __name__ == "__main__":  
    main()

在这个例子中,我们已经定义了–verbose参数,这个选项是一个布尔标志(flag),当它被指定时,args.verbose会被设置为True,否则它不会出现在args对象中。当–verbose被指定时,您的脚本会打印一条额外的消息来确认文件已经被成功读取并打印。


http://www.kler.cn/a/376676.html

相关文章:

  • 微信小程序——创建滑动颜色条
  • oracle闪回表
  • 1. npm 常用命令详解
  • web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理
  • 【MySQL 保姆级教学】用户管理和数据库权限(16)
  • 开放词汇检测新晋SOTA:地瓜机器人开源DOSOD实时检测算法
  • 【设计模式】如何用C++实现依赖倒置
  • 人工智能技术:塑造未来生活与工作的变革力量
  • 【机器学习】K-means 聚类
  • C++——二叉树(进阶)
  • STM32(hal库)中,系统滴答时钟(Systick)频繁进入中断(默认1ms一次),是否会频繁进入中断,影响主程序的运行?
  • DICOM 基础知识:深入理解DICOM数据结构与标签说明
  • MFC文件管理-学习笔记
  • 常用滤波算法(一)-限幅滤波法
  • 摄像机视频分析软件下载LiteAIServer视频智能分析平台中的噪声监测算法及其应用场景
  • WebSocket和HTTP请求的区别
  • vscode 创建 vue 项目时,配置文件为什么收缩到一起展示了?
  • python eval() 怎么用
  • VScode找回误删文件
  • fastrtps 网络端口的计算-以共享内存为例
  • Redis实战-利用Lua解决批量插入防重方案
  • 【Linux 从基础到进阶】高可用性与负载均衡
  • Juniper网络安全
  • 前端八股文第二篇
  • Spring Boot--06--InitializingBean 和 @PostConstruct
  • redis部署手册