前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python实习文件检索

Python实习文件检索

作者头像
ZackSock
发布2021-12-18 11:23:01
8770
发布2021-12-18 11:23:01
举报
文章被收录于专栏:ZackSockZackSock

一、前言

很多情况下我们都需要进行文件搜索。比如找一个很早之前的文件,或者想删除重复的文件等。前者只需要更具名称来查找文件,而后者的话还需要查找文件的内容。今天我们就来实现文件搜索的操作。

二、fnmatch模块

1、遍历

在搜索文件之前,我们有一个关键操作,就是遍历文件夹,这部分代码如下:

代码语言:javascript
复制
import os 
basedir = r"D:\\" 
for root, dirs, files in os.walk(basedir): 
    for file in files: 
        path = os.path.join(root, file) 
        print(path)

其中path就是我们遍历到的文件绝对路径。有了这个我们就可以开始搜索文件了。

2、搜索

在Python中内置了一个fnmatch模块,我们可以使用这个模块来匹配目录,具体使用如下:

代码语言:javascript
复制
from fnmatch import fnmatch
# 匹配目录
match = fnmatch("test.jpg", "test.jpg")
print(match)

我们调用了fnmatch函数,传入了要匹配的内容以及匹配规则。这里我们直接匹配两个字符串,删除结果如下:

代码语言:javascript
复制
True

它会返回一个bool值。但是这个和直接if判断不是一样的吗,这个fnmatch模块有什么特殊功能吗。答案是有的,除了直接匹配,fnmatch还支持通配符的操作,比如下面的代码:

代码语言:javascript
复制
from fnmatch import fnmatch
match = fnmatch("test.jpg", "*.jpg")
print(match)

这里我们用test.jpg*.jpg来匹配。其中*就表示任意多个字符,也就是匹配.jpg结尾的文件。除了*还有一些其它通配符,具体如下:

通配符

作用

*

匹配所有字符

?

匹配单个字符

[seq]

匹配指定范围内的字符

[!seq]

匹配指定范围外的字符

我们可以根据需求来写匹配规则。除了fnmatch函数,fnmatch中还有一个filter函数,这里就不展开了。

三、文件搜索

我们结合遍历和匹配的操作写出文件搜索的功能,代码如下:

代码语言:javascript
复制
import os
from fnmatch import fnmatch
basedir = r"D:\\"
for root, dirs, files in os.walk(basedir):
    for file in files:
        path = os.path.join(root, file)
        # 匹配D盘下的所有gif图片
        if fnmatch(path, "*.gif"):
            print(path)

上面就是搜索D盘下所有GIF图的操作,大家可以根据自己的需求来修改。如果要查找路径中带有test的文件可以修改为如下:

代码语言:javascript
复制
import os
from fnmatch import fnmatch
basedir = r"D:\、"
for root, dirs, files in os.walk(basedir):
    for file in files:
        path = os.path.join(root, file)
        if fnmatch(path, "*test*"):
            print(path)

这里我们就是修改了匹配规则。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新建文件夹X 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、fnmatch模块
    • 1、遍历
      • 2、搜索
      • 三、文件搜索
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档