Python标准库glob模块详解

news2024/11/25 12:49:06

glob是python中的内置模块,该模块主要是用来查找文件与目录的。glob模块是按照 Unix shell 所使用的规则找出所有匹配特定模式的路径名称。我们只需要了解该模块的匹配规则与常用函数,就会使文件查找,路径匹配变得非常快捷简单。

1.匹配规则---四个常用通配符

*匹配0个或多个字符
**匹配所有文件、目录、子目录以及子目录中的文件(Python3.5新增)
匹配一个字符
[]匹配指定范围内的字符,比如:[0-9]匹配数字,[a-z]匹配小写字母

2.glob模块中常用的3个函数

glob库有3个主要函数供我们使用,它们分别是glob()、iglob()、escape()函数。

glob.glob(pathname,recursive=False):返回符合匹配条件的所有文件的路径;

参数pathname:搜索的相对路径

recursive=False:代表递归调用,与特殊通配符“**”一同使用,默认为False,False表示不递归调用,True表示递归调用;

glob.iglob():返回一个迭代器对象,需要循环遍历获取每个元素,得到的也是符合匹配条件的所有文件的路径;

glob.escape():escape可以忽略所有的特殊字符,就是星号、问号、中括号,用处不大;

值得注意的是recursive=False:代表递归调用,与特殊通配符“**”一同使用,默认为False,False表示不递归调用,True表示递归调用;

下面我们来看一个例子

在电脑的D盘下,有my_pictures文件夹,该文件夹中包含许多.bmp .png .tif .jpg等格式的图片,文件夹下还有一个子文件夹level1, 该文件夹中同样包含许多.bmp .png .tif .jpg等格式的图片,该文件夹下还有一个子文件夹level2,文件夹中同样包含多张图片。

 

任务一:找出my_pictures文件夹下以.jpg为后缀的图片(不含子目录) 

import glob;

path = r"D:my_pictures\*.jpg"#表示找出路径下所有以.jpg为后缀的图片
list=glob.glob(path)
print(list)

不难看出通配符*号在这里匹配任意名称的jpg格式的图片。

调用glob()方法返回的是一个列表,同样我们也可以调用iglob()方法,不过该方法返回的是一个迭代器。如图:

任务二:找出my_pictures文件夹下图片文件名称包含小写字母o的图片路径(不含子目录)

 这里匹配规则应该写成D:my_pictures\*o*

我们也可以调用glob()函数完成这个小任务,不过只要匹配规则书写正确,调用这两个函数都是一样的道理。

 任务三:找出子目录level1下图片名为img*的jpg图片路径(不含子目录)

通配符?表示一个字符,img?.jpg可以匹配img1.jpg  img2.jpg等

任务三: 找出目录level1下图片名包含数字的图片路径(不含子目录)

注意:匹配规则式子为*[0-9]*.* 

而如果匹配式书写为*[0-9]*会匹配到子目录level2

 任务四:找出my_pictures中所有.jpg格式的图片(包含子目录)

 注意:匹配规则式子为**\*.jpg  并且参数recursive=True

 

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

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

相关文章

【springboot整合ES】springboot整合ES

springboot整合ES 在Springboot整合ES提供了启动依赖jar。 该jar包封了一个类: RestHighLevelClient 该类可以对象ES中各个接口进行相应的操作。 1. 新建项目 创建springboot工程并导入相关的依赖 2.3.12.RELEASE。最新版spring boot2.7.5中RestHighLevelClient已过时 2. 创建…

python_爬虫

定时、定量、制定目标的数据搜集程序。 技术库 网络请求 urllibrequests(三方)/ urllib3selenium(UI自动测试、动态js渲染)appium(手机App的爬虫或UI测试) urllib requests 基于urllib和urllib3封装的…

什么是“孤岛效应”? ----防孤岛保护装置

防孤岛保护是对分布式光伏电站有着重要保护作用的。即当电网出现电压高、电压低、频率高、频率低故障时,光伏并网开关及时跳闸。当电网恢复供电并且电压和频率达到允许值时,并网开关要自动合闸。这样的目的是在为了国家电网不受太大影响的情况下&#xf…

理解透C语言一维数组,二维数组这一篇就够啦!

前言 💖作者:龟龟不断向前 ✨简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。 👻专栏:C初阶知识点 👻工具分享: 刷题: 牛客网 leetcode笔记软件&#xff…

网站部署:使用Nginx部署vue项目到阿里云服务器

最近租了个阿里云的服务器,想使用Nginx把刚做好的网站部署上去 下载Nginx 目前yum已经有了Nginx的源,因此可以直接用yum下载和安装 yum -y install nginx默认的安装位置为/etc/nginx 默认的项目位置为/usr/share/nginx 如果安装失败检查是否安装了zli…

渗透测试-CTF文件类型操作

识别文件类型 文件分离 文件合并 识别文件类型 当文件没有后缀名或者有后缀名无法正常打开时,根据识别的文件类型来修改后缀名即可正常打开文件。 使用场景:不知道后缀名,无法打开文件。 第一种方式:kali中使用 file 文件名 f…

173:vue+openlayers:解决国内openstreetmap地图加载不出来的问题(代码示例)

第173个 点击查看专栏目录 近来写程序,发现openlayers用OSM方式来加载OpenStreetMap地图,一片爆红,瓦片加载不出来。 本示例的目的是介绍演示如何在vue+openlayers中解决OpenStreetMap地图在国内被DNS污染,加载不出来瓦片的问题,通常我们是直接引用OSM,这里采用的是XYZ方…

2022年11月第十四届蓝桥杯校模拟赛详解+代码(一)

“须知少时凌云志,自许人间第一流” 鄙人11月八号有幸参加学校蓝桥杯校选拔赛,题型为5道填空题,5道编程题,总时间为小时。奈何能力有限,只完成了5道填空和3道编程大题,现进行自省自纠,分享学习&…

国产ETL工具 BeeDI 产品“实时同步“之 高阶 功能组件

BeeDI 提供“ 实时”企业数据集成。实时组件通过实时处理和传输业务数据的能力,增强了BeeDI的批处理功能。为满足当下复杂的业务需求,IT部门需要实时集成以加快核心业务流程和信息流。使用实时功能,IT部门可以使用统一界面,从BeeD…

【Mybatis】mybatis使用与理解

1. mybatis基础环境搭建 若想使用mybatis,需要有如下两个jar包:①mybatis的核心jar包。②数据库驱动包。 (想使用别人提供的服务就必须要有别人的jar包;mybatis是和数据库打交道的,那么你的程序中,数据库的…

【MySQL高级】MySQL的锁机制

目录 概述 MyISAM 表锁 InnoDB行锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制(避免争抢)。 在数据库中,除传统的 计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共…

重装系统后要安装哪些驱动

​重装win10后需要安装驱动吗?win10系统比win7系统高级的地方在于系统内置了很多驱动,这可以省去用户很多安装时间,下面小编来告诉大家重装系统后要安装的驱动有哪些。 工具/原料: 系统版本:windows10系统 品牌型号&#xff1…

mysql8其它新特性

文章目录MySQL8.0新特性新特性1:窗口函数序号函数ROW_NUMBER()函数RANK()函数DENSE_RANK()函数分布函数PERCENT_RANK()CUME_DIST()函数前后函数LAG(expr,n)函数LEAD(expr,n)函数首尾函数FIRST_VALUE(expr)函数LAST_VALUE(expr)函数其它函数NTH_VALUE(expr,n)函数NTI…

Docker 常用命令大全

个人理解 docker中的镜像 就像是咱们java 中的Class ,而容器呢 是基于这个镜像构建出的实例 类似于咱java 中 根据Class构造出的一个个实例对象 ,本人是初学者 理解有误还请见谅,并麻烦您说说您的看法让彼此相互学习… 按我理解 简言之 doc…

Java-日期类,正则实验

1. 随机产生两个日期时间,输入按时间先后顺序输出 public class RandomDate {SuppressWarnings("deprecation")public static void main(String[] args) throws ParseException {SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss&…

二分查找 【模板+中间值问题】

全文目录😃前言😕二分查找动图演示😴代码模板❗️ 使用哪个模板问题 ❗️💢 mid为何1问题 💢😃前言 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。…

[解决]github上传大文件卡住

0x00 需求 github目前的策略是超过50M的文件不允许上传,推荐使用lfs。 0x01 操作 再把之前提交的commit 回滚: git reset --hard commitId 在配置lfs: git lfs install git lfs track "*.zip" git lfs track "*.jar" git…

【K8S】亲和、反亲和、污点、容忍

文章目录【K8S】亲和、反亲和、污点、容忍K8s调度亲和与反亲和Pod和Node硬亲和和软亲和requiredDuringSchedulingIgnoredDuringExecution:硬策略preferredDuringSchedulingIgnoredDuringExecution:软策略污点与容忍污点(Taint)污点…

Python学习----基础语法2

布尔类型 布尔本质上是 1 和 0 if 基本语法格式 语法还是比较简单的 , 需要注意的是 , Python是通过空格缩进来判断代码块归属的 ( 不像java这么通过 花括号进行区分 ) , 默认是四个空格 , 你也可以使用两个或者三个等 , 只要全部统一即可 , 但是编辑器会有提示 , 规范是四…

一文带你快速了解ptrdiff_t

简介 ptrdiff_t是C/C标准库中定义的一个与机器相关的数据类型。ptrdiff_t类型变量通常用来保存两个指针减法操作的结果。 ptrdiff_t定义在stddef.h(cstddef)这个文件内。 ptrdiff_t通常被定义为long int类型。 ptrdiff_t定义在C99标准中。 标准库类…