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(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')

到此这篇关于python使用技巧-查找文件 的文章就介绍到这了,更多相关python查找文件 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 如何查找特定类型文件

    写在之前 今天的文章是介绍如何用 Python 去定位特定类型的文件,会讲到用字符串匹配文件名定位特定文件以及顺带介绍一下遍历目录树的函数,通过今天的这一部分以及之前文章讲到的文件获取属性的操作,可以做很多有意思的事情. 定位特定文件 定位特定的文件,可以使用 fnmatch 以及 glob 这两个标准库,我们下面来分别看一下. 1. 使用 fnmatch 标准库 一般的话我们想要查找特定类型的文件,可以通过字符串的前缀匹配和后缀匹配来查找,具体实例如下所示: >>> import os

  • Python基于gevent实现文件字符串查找器

    1.递归遍历目录下所有文件并通过finder函数定位指定格式字符串 2.用来查找字符串的finder函数是自己定义的,这里定义了一个ip_port_finder通过正则表达式查找ip:port格式(粗匹配:数字.数字.数字.数字:数字)的字符串 3.用gevent来实现协程并发完成耗时任务 代码如下: # -*- coding: utf-8 -*- import re from os.path import join from os import walk from gevent import

  • 如何利用python查找电脑文件

    利用python查找电脑里的文件非常方便 比如在我的电脑:D:\软件 文件夹里有非常非常多的软件. 我忘记某个软件叫什么名字了,只记得文件名称里有 now,而且后缀名是.zip 利用python如何实现查找呢? 用python非常简单: 代码如下截图: 首先是导入模块os 然后就是利用os.listdir()打开目录下的所有文件,files其实是一个列表. 其实前2行可以合并为一行:files=os.listdir(u'D:\软件') 这样写也行. 下面就是一个for循环非常简单,然后就是做一个

  • python查找特定名称文件并按序号、文件名分行打印输出的方法

    python-查找特定名称文件并按序号.文件名分行打印输出 第1天第2题 1.遍历"Day1-homework"目录下文件: 2.找到文件名包含"2020"的文件: 3.将文件名保存到数组result中: 4.按照序号.文件名分行打印输出. 注意:提交作业时要有代码执行输出结果. # -*- coding: utf-8 -*- # 查找特定名称文件 # 2020-04-22 # 导入OS模块 import os # 待搜索的目录路径 path = "Day

  • Python:通配符查找、拷贝文件的操作

    把文件夹dir1中后缀为'.jpg'的文件拷贝到文件夹dir2中: import glob import shutil import sys if __name__ == '__main__': file_names = glob.glob('dir1/*.jpg') for file_name in file_names: try: shutil.copy(file_name, 'dir2') except: print("Failed to copy file: ", sys.ex

  • Python实现检测文件的MD5值来查找重复文件案例

    平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的MD5值,虽然对于抄袭来说作用不大,但是聊胜于无,以后可以做一个复杂点的. # coding: utf8 import hashlib import os from collections import Counter import sys reload(sys) sys.setdefaultencoding('utf-8') def get_md5_01(file_path): md5

  • python使用技巧-查找文件 

    标准库的fnmatch库专门用来进行文件名匹配,支持使用通配符进行字符串匹配. 1.fnmatch:判断文件名是否符合特定的模式: 2.fnmatchcase:判断文件名是否符合特定的模式,不区分大小写: 3.filter:返回输入列表中,符合特定模式的文件名列表: 4.translate:将通配符模式转换成正则表达式. fnmatchcase函数与fnmatch函数几乎一样,只是在匹配文件名时会忽略文件名中字母的大小写. filter函数与fnmatch函数比较类似,区别在于fnmatch每次

  • Python实现自动化整理文件的示例代码

    目录 自动化整理计算机文件 1. 文件的自动分类 2. 文件和文件夹的快速查找 3. 自动清理重复文件 4. 批量转换图片格式 5. 按拍摄日期自动分类图片 自动化整理计算机文件 通过Python编程完成文件的自动分类.文件和文件夹的快速查找.重复文件的清理.图片格式的转换等常见工作. 1. 文件的自动分类 根据文件的扩展名将文件分类整理到不同文件夹中. 使用os和shutil模块 os模块提供了许多操作文件和文件夹的函数,可对文件或文件夹进行新建.删除.查看属性以及查找路径等操作. shuti

  • python 实现查找文件并输出满足某一条件的数据项方法

    python 实现文件查找和某些项输出 本文是基于给定一文件(students.txt),查找其中GPA分数最高的 输出,同时输出其对应的姓名和学分 一. 思路 首先需要打开文件,读取文件的每一行,将姓名,学分,GPA值分别存到三个对应的列表中,对于GPA列表进行遍历,获取其中值最大的一项,但是需要保存最大值对应的索引,方便输出对应的姓名和学分项 二. 代码 版本1 # -*- coding: utf-8 -*- """ Created on Thu Feb 1 12:24:

  • Python寻找路径和查找文件路径的示例

    Sys.path 指定用于模块搜索路径的字符串列表 也可以通过sys模块的append方法在Python环境中增加搜索路径. Sys.path.append('/usr/bin/') /usr/lib64/python2.6 python模块默认存放路径 .pyc是一种二进制文件,是由py文件经过编译后生成的文件,加载的速度有所提高,且为加密文件,有利于保密. 1:简单安全的方法,是在sys.path的某个目录下添加路径配置文件,最常见的就是在-/site-package/目录下.路径配置文件的

  • python根据多个文件名批量查找文件

    本文实例为大家分享了python根据多个文件名批量查找文件的具体代码,供大家参考,具体内容如下 老板给了我一个文件列表,让我在一堆文件中挑出来,他要的文件有500多个,一堆文件有上千个,而且给的是关键词,不是完整的文件名. 我先做了类似的文件测试一下,一个名为filename的excel表 又做了一个文件夹 接下来运行代码 import os import numpy as np import pandas as pd import shutil file_path='/home/disk/yh

  • Python 实用技巧之正则表达式查找和替换文本的操作方法

    1.需求 我们想对字符串中的文本做查找和替换. 2.解决方案 对于简单的文本模式,使用str.replace()即可. 例如: text='mark ,帅哥,18,183 帅,mark' print(text.replace('18','19')) print(text) 运行结果: mark ,帅哥,19,193 帅,mark mark ,帅哥,18,183 帅,mark 针对更为复杂的模式,可以使用re模块中的sub()函数. 实例:将日期格式从"11/28/2018"改为&quo

  • python实现递归查找某个路径下所有文件中的中文字符

    本文实例为大家分享了python实现递归查找某个路径下所有文件中的中文字符,供大家参考,具体内容如下 # -*- coding: utf-8 -*- # @ description: # @ author: # @ created: 2018/7/21 import re import sys import os reload(sys) sys.setdefaultencoding("utf8") def translate(str): out = set() line = str.s

  • Python查找文件中包含中文的行方法

    前言 近几天在做多语言版本的时候再次发现,区分各种语言真的是一件比较困难的事情,上一次做中文提取工具的就花了不少时间,这次决定用python试一试,结果写起来发现真是方便不少,自己整理了一下方便以后查找使用. 代码 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # find the line of containing chinese in files __author__ = 'AlbertS' import re def start_find_

  • Python倒排索引之查找包含某主题或单词的文件

    什么是倒排索引? 倒排索引(英语:Inverted index),也常被称为反向索引.置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射.它是文档检索系统中最常用的数据结构.通过倒排索引,可以根据单词快速获取包含这个单词的文档列表.倒排索引主要由两个部分组成:"单词词典"和"倒排文件". 假设我们现在有文件: test1.txt中存有:我们爱自然语言处理 test2.txt中存有:我们爱计算机视觉 正向索引:

  • python使用技巧-文件读写

    前言: 在Python中,要对一个文件进行操作,只需要使用内置的open函数打开文件即可.open函数接受文件名和打开模式作为参数,返回一个文件对象.工程师通过文件对象来操作文件,完成以后,调用文件对象的close方法关闭文件即可. 新建opentest.py: f = open('log.log') print(f.read()) f.close() 输出: 2022-02-17 13:41:34,796:INFO:info2022-02-17 13:41:34,797:WARNING:war

随机推荐