python使用技巧-查找文件
作者:zzxiaoma 发布时间:2021-11-10 18:48:21
标准库的fnmatch
库专门用来进行文件名匹配,支持使用通配符进行字符串匹配。
1、fnmatch:判断文件名是否符合特定的模式;
2、fnmatchcase:判断文件名是否符合特定的模式,不区分大小写;
3、filter:返回输入列表中,符合特定模式的文件名列表;
4、translate:将通配符模式转换成正则表达式。
fnmatchcase
函数与fnmatch
函数几乎一样,只是在匹配文件名时会忽略文件名中字母的大小写。
filter
函数与fnmatch
函数比较类似,区别在于fnmatch每次对一个文件名进行匹配判断,filter函数每次对一组文件名进行匹配判断。filter 函数接受文件名列表为第一个参数,文件名模式为第二个参数,然后以列表的形式返回输入列表中所有符合模式的文件名。
import os,fnmatch
names = os.listdir('.')
for name in names:
if fnmatch.fnmatch(name,'*.xlsx'):
print(name)
if fnmatch.fnmatch(name,'[a-z]*'):
print(name)
print(fnmatch.filter(names,"[a-z]*.xlsx"))
目前,我们要获取特定类型的文件列表,都是先通过os.listdir获取文件列表,然后通过使用fnmatch进行文件名模式匹配进行过滤。而在Python中还有更加简单的方式,即使用标准库的glob库。glob的作用相当于os.listdir
加上fnmatch
。使用glob以后,不需要调用os.listdir获取文件列表,直接通过模式匹配即可。
import glob
print(glob.glob('*.xlsx'))
print(glob.glob('[a-z]*'))
前面的例子都是查找某一个目录下的文件并通过模式匹配去选择自己需要的文件类型。在实际工作过程中,更有可能遇到的是查找某个目录及其子目录下的所有文件。例如查找某个目录及其子目录下的图片。可以使用os模块的walk函数。walk函数遍历某个目录及其子目录,对于每一个目录,walk返回一个三元组(dirpath, dirnames,filenames)。其中dirpath
保存的是当前目录,dirnames是当前目录下的子目录列表,filenames
是当前目录下的文件列表。
import os,fnmatch
images = ['*.jpg','*.jpeg','*.png','*.tif','*.tiff']
matches = []
for dirpath,dirnames,filenames in os.walk(os.path.expanduser(r"D:/test")):
for image in images:
for filename in fnmatch.filter(filenames,image):
matches.append(os.path.join(dirpath,filename))
print(matches)
在遍历目录及其子目录时,如果想要忽略掉某一个子目录,可以直接修改三元组中的dirnames
,即从dirnames列表中移除需要忽略掉的目录。
if 'extest' in dirnames:
dirnames.remove('extest')
来源:https://blog.51cto.com/u_3764469/5020275
猜你喜欢
- 开始我们将通过示例介绍偶数列表以及在 Python 中创建偶数列表的不同方法。什么是偶数本教程展示了如何在 Python 中制作偶数列表。
- asp之家注:本文介绍的长文章分页方法不错,作者分析的很详细,用分页符来手动为长文章分页,应该是最好的长文章分页方法,我们不必担心会把一些代
- 引言:一开始二维码加群,但是呢,这个东西隔一段时间会过期,我需要 每隔一段时间去更新二维码,然后当群人数超过100人了,只能邀请进群, 这个
- 最近自己很关注文档的撰写,包括如何制作PPT。因为发现自己在表达想法和观点的时候,从自己的语言到文字都异常的欠缺。常常需要“高人”帮忙翻译。
- 我很想自己写一个这样的程序,不过wordpress是php的,我blog是ASP的,只好用ASP写代码了。经过一番折腾测试,终于让我的梦想变
- SQL Server TEXT、NTEXT字段拆分的问题引用的内容:SET NOCOUNT ON CREATE 
- 由于某些原因需要把函数直接放到 img 标签上的 onload 属性执行,比如:For some reasons we have to ex
- 示例代码: BulkStockBll bll = new BulkStockBll(); DataSet ds = bll.GetBulkS
- 指令和程序计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说
- 我一般看书喜欢做笔记,这份笔记不知道是什么时候看的什么书做的,也忘了是否是摘自其他地方,总之一份汇总,应该适合初学者,对于Javascrip
- 引子任务调度(Task Scheduling)是很多软件系统中的重要组成部分,字面上的意思是按照一定要求分配运行一些通常时间较长的脚本或程序
- 首先声明,在这组里我是个绝对的菜鸟。再次声明,小爝这个菜鸟在“网页设计”这个圈里混了快1年了。 摘要:我知道我有多少底,所以我在总结我的成长
- 在CSS中,实现分栏布局有两种方法。第一种方法是使用四种CSS定位选项(absolute 、static、relative和fixed)中的
- 方法一:(by yangedie )这几天刚刚做了这个东西,有网友问到,所以分享一下。ie6、firefox2 通过,麻烦有ie7的网友测试
- 今天想围绕“产品交互设计”说说一些我们的想法,一说到产品设计,我想在坐的各位脑海里肯定联想到了很多表单设计、导航设计、界面布局等等,但是今天
- 导言GridView是由一组字段(Field)组成的,它们都指定的了来自DataSource中的什么属性需要用到自己的输出呈现中。最简单的字
- 50个常用sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(
- 用HZHOST实用工具集的服务器安全设置里安装了MSSQL安全配置,现在SQL2000还原不了数据库了,从还原选定设备浏览文件夹时出现&qu
- 关于asp缓存函数,类什么的,在网上可以说笔笔皆是,为啥我要不辞辛苦去写一个呢?大概看了下,各有各的优点吧,可是大部分好像不可以缓存数据额,
- 这是内部的一个邮件记录,分享出来听下业内同行的声音。事情是这样的..==先是 A 推荐了白鸦的推到内部群:“设计师们一定要养成一个习惯:无论