[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

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于