美文网首页动态语言Ruby Python
会了这个方法之后,轻轻松松用 Python 定位特定类型文件

会了这个方法之后,轻轻松松用 Python 定位特定类型文件

作者: 妄心xyx | 来源:发表于2018-12-30 22:46 被阅读2次

写在之前

今天的文章是介绍如何用 Python 去定位特定类型的文件,会讲到用字符串匹配文件名定位特定文件以及顺带介绍一下遍历目录树的函数,通过今天的这一部分以及之前文章讲到的文件获取属性的操作,可以做很多有意思的事情。

定位特定文件

定位特定的文件,可以使用 fnmatch 以及 glob 这两个标准库,我们下面来分别看一下。

1. 使用 fnmatch 标准库

一般的话我们想要查找特定类型的文件,可以通过字符串的前缀匹配和后缀匹配来查找,具体实例如下所示:

会了这个方法之后,轻轻松松用 Python 定位特定类型文件

其实大部分的情况下这种用字符串匹配的方法来查找文件就足够可以满足需要,如果有些情况下需要更加灵活一点的字符串匹配,就可以使用 fnmatch 库,这是一个专门用来进行文件名匹配的库,支持使用通配符来进行文字匹配(比如'*','?'等)。

fnmatch 这个库很简单,只有 4 个函数:fnmatch,fnmatchcase,filter,translate:

  • fnmatch:判断文件名是否符合特定的模式;
  • fnmatchcase:判断文件名是否符合特定的模式(不区分大小写);
  • filter:返回输入列表中,符合特定模式的文件名列表;
  • translate:将通配符模式转换成正则表达式。

上面 4 个最常用是它的同名函数 fnmatch ,我的当前目录下有 4 个文件,分别是:a.txt,b.txt,c.py,test.py,下面我就用 fnmatch 函数来对当前目录下的这 4 个文件进行匹配性测试,具体请看下面代码:

会了这个方法之后,轻轻松松用 Python 定位特定类型文件

fnmatchcase 函数与 fnmatch 函数几乎一样,只是在匹配的时候会忽略大小写字母;filter 函数与 fnmatch 比较类似,区别在于fnmatch 一次只对一个文件名匹配,而 filter 一次可以对多个文件名进行匹配判断,下面我们就再来看一下 filter 的用法:

会了这个方法之后,轻轻松松用 Python 定位特定类型文件

2.使用 glob 定位

我们在上面介绍的获取特定类型的文件列表,首先是通过 os.listdir 获取全部的文件列表,然后通过字符串匹配或者使用 fnmatch 进行文件名模式匹配来定位,习惯了 Python 的简洁优雅,这多出来的一步总觉得哪里怪怪的,好在我现在知道了 glob。

glob 的作用相当于 os.listdir + fnmatch 的组合,使用 glob 以后,就不需要用 os.listdir 获取文件列表,直接通过模式匹配就可以解决了,具体操作如下所示:

会了这个方法之后,轻轻松松用 Python 定位特定类型文件

可以看到,Python 真的非常的灵活,光是定位目录下特定的文件类型我就已经介绍了 3 种方式,一般情况下就用字符串匹配就可以解决,如果需要更加灵活一点的的,可以使用 fnmatch 和 glob。

遍历目录树

再上一节中我们都是查找某个目录下的文件然后通过匹配去定位自己需要的文件类型。但是在实际的应用过程中我们更可能遇到的是某个目录及其子目录下的所有文件。比如查找某个目录及其子目录下所有的 txt 文件等等,对于这类的需求,我们可以使用 os 模块下的「walk」函数。walk 函数遍历某个目录及其子目录,对于每一个目录,walk 返回一个三元组,依次是「当前目录」,「当前目录下的子目录」,「当前目录下的文件列表」。

下面我们来演示一下 os.walk 函数的用法,做一个小的练习,来遍历一下 /root/rocky0429 目录及其子目录下的所有 txt 和 图片文件:

会了这个方法之后,轻轻松松用 Python 定位特定类型文件 会了这个方法之后,轻轻松松用 Python 定位特定类型文件

相关文章

  • 会了这个方法之后,轻轻松松用 Python 定位特定类型文件

    写在之前 今天的文章是介绍如何用 Python 去定位特定类型的文件,会讲到用字符串匹配文件名定位特定文件以及顺带...

  • 用Python获取子目录或文件列表

    在Python编程中,如果需要对文件进行操作的话,有时会需要搜索指定目录下的特定类型的文件。获取子目录或文件列表用...

  • python的内存调试

    python内存增加,内存泄漏调试 gc,objgraph 以此方法生成dot文件之后 用pydot将dot转换成...

  • 2019-01-25 python高效处理大量xlsb文件

    人生苦短,我用python。 这周深刻体会了这句话。 本周用python完成了3个程序,分别是: -文件简单加密解...

  • 【Linux系统管理3】

    查找文件 使用fnmatch找到特定文件 Python标准库fnmatch专门用来进行文件名匹配,它只有四个方法。...

  • Python中判断所给路径是文件还是目录

    在python中有时不知道所给的路径是目录还是文件,可以用下面方法判断所给的路径是目录还文件,或者其他类型。

  • 读取txt文件

    """ 读取txt文件txt文件使我们经常操作的文件类型,Python提供了以下几种读取txt文件的方法。read...

  • 汇编知识汇总

    ELF文件 重定位表 查看方法 表结构 偏移量可重定位文件:该重定位入口要修正的位置的第一个字节 重定位入口类型R...

  • v1.5 python数据结构互转

    python 数据类型: 列表,字典,元组,字符串;每种数据各有其特性,各有其特定的操作方法。类型间相转换,以达到...

  • Swift 静态方法

    Swift 方法分为: 实例方法 (Instance Methods)类型方法(静态方法) 方法是与某些特定类型相...

网友评论

    本文标题:会了这个方法之后,轻轻松松用 Python 定位特定类型文件

    本文链接:https://www.haomeiwen.com/subject/hwmblqtx.html