python使⽤技巧-查⽂件
标准库的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(panduser(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:
到此这篇关于python使⽤技巧-查⽂件的⽂章就介绍到这了,更多相关python查⽂件内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。