[Python] glob内置模块介绍和使用场景(案例)

2024-01-25 19:44

本文主要是介绍[Python] glob内置模块介绍和使用场景(案例),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Unix glob是一种用于匹配文件路径的模式,它可以帮助我们快速地找到符合特定规则的文件。在本文中,我们将介绍glob的基本概念、使用方法以及一些实际应用案例。

glob介绍

Glob(Global Match)是Unix和类Unix系统中的一种文件名扩展功能,它可以根据指定的模式匹配文件名。Glob使用通配符来表示文件名中的特定字符或字符组合,例如*表示任意数量的字符,?表示一个字符,[]表示一个字符集合等。通过这些通配符,我们可以轻松地筛选出符合特定规则的文件。

如何使用glob

在Unix和类Unix系统中,我们可以使用shell内置的glob命令来匹配文件路径。

glob [选项] 模式

其中,模式是一个包含通配符的字符串,用来描述要匹配的文件名或目录名的模式。通配符可以包括以下特殊字符:

  • *:匹配任意字符(包括空字符)。
  • ?:匹配任意单个字符。
  • [字符集]:匹配字符集中的任意一个字符。
  • [!字符集]:匹配不在字符集中的任意一个字符。

可以使用引号将模式括起来,以避免特殊字符被Shell解释。

以下是一些常用的glob命令选项:

  • -d:仅匹配目录。
  • -l:仅匹配符号链接。
  • -r:递归地匹配子目录。
  • -s:匹配命令的结果总数。

Python中的glob内置模块

此外,我们还可以使用Python的glob内置模块来实现类似的功能,该模块用来以特定格式匹配一系列路径,规则与Unix Shell相同,返回一个包含匹配结果的无序列表。实现过程用到了os.scandir和fnmatch.fnmatch(),前者将文件路径输入列表,后者按规则匹配。匹配用到的主要通配符为 *, ? 和 []这三个,基本规则如下:

*: 匹配多个任意字符
?: 匹配1个任意字符
[]: 匹配[]中注明范围内的1个字符,如果要匹配特殊字符比如上面的*和?,用[*]和[?]即可

glob — Unix style pathname pattern expansion — Python 3.12.1 documentation

主要方法:

1) glob.glob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)

Return a possibly empty list of path names that match pathname, which must be a string containing a path specification. 

这个方法返回一个列表,其中包含所有与指定模式匹配的文件路径。如果recursive参数为True,则会递归地搜索目录及其子目录。默认情况下,recursive参数为False。如果root_dir不为None,则返回的路径是相对于root_dir的相对路径。

2) glob.iglob(pathname, *, root_dir=None, dir_fd=None, recursive=False, include_hidden=False)

Return an iterator which yields the same values as glob() without actually storing them all simultaneously.

这个方法返回一个迭代器,其中包含所有与指定模式匹配的文件路径。如果recursive参数为True,则会递归地搜索目录及其子目录。默认情况下,recursive参数为False。如果root_dir不为None,则返回的路径是相对于root_dir的相对路径。

3) glob.escape(pathname)

这个方法将路径名中的特殊字符转义,以便在正则表达式中使用。例如,它会将*替换为\*,将?替换为\?等。

以下是一个简单的示例:

import glob# 查找当前目录下所有的.txt文件
txt_files = glob.glob('*.txt')
print(txt_files)

不足之处

glob模块只能做比较简单的匹配查询,不支持同时查询多个文件扩展名,比如.txt和.md文件,需要做2次查询,然后把2次结果进行合并,这样无形中降低了查询的效率。

使用案例

下面我们来看一些实际的使用案例:

查找当前目录下所有以a、b、c开头的目录

glob -d [abc]*

查找所有以.txt结尾的文件

$ glob *.txt
file1.txt
file2.txt
file3.log

Python中使用glob模块查找当前目录的所有以.txt结尾的文件

import globtxt_files = glob.glob('*.txt')
print(txt_files)

Python中使用glob模块查找指定目录及其子目录下的所有以.txt 结尾的文件

import globtxt_files = glob.glob('*.txt', root_dir='C:/ABC', recursive=True)
print(txt_files)

 

这篇关于[Python] glob内置模块介绍和使用场景(案例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644396

相关文章

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Python ORM神器之SQLAlchemy基本使用完全指南

《PythonORM神器之SQLAlchemy基本使用完全指南》SQLAlchemy是Python主流ORM框架,通过对象化方式简化数据库操作,支持多数据库,提供引擎、会话、模型等核心组件,实现事务... 目录一、什么是SQLAlchemy?二、安装SQLAlchemy三、核心概念1. Engine(引擎)

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum