Python递归查找含关键字文件及批量删除文件夹方法

山间有风
山间有风
发布时间:2026-10-15| 4人浏览过
原创

本文介绍如何在Python中递归查找包含特定关键字的文件,并处理多层目录结构下的文件读取问题。同时提供使用os和shutil模块删除文件或文件夹的多种方法,包括单文件删除、递归删除目录及清理解压后文件的实用代码示例,帮助提升文件处理效率。

本文主要介绍如何在Python中查找包含特定关键字的文件,并提供删除相关文件夹的方法。

在实际文件操作中,用户往往无法直接获知文件的具体存储路径。

若仅需处理单个文件,通常可在该文件所在的文件夹目录下直接运行Python脚本,此时脚本默认以当前目录为工作路径。

然而,当面对具有多层目录结构的文件时,上述简单方法往往显得局限性较大。

例如,在处理message文件时,可能需要先解压一个压缩包。该压缩包包含两个文件夹,且每个文件夹下的第四层目录中均存在一个message文件。此时,任务目标是将每个message文件读取并进行分析。

若使用绝对路径来读取文件,会显著降低代码的重用性。因此,本文编写了一个用于查找关键字文件的函数(该函数虽存在若干不足,但能解决当前紧迫需求)。

#寻找关键字文件 
def findfile(keyword,root): 
#keyword为关键字,root为文件夹路径 
        filelist=[]   #存放每个文件
        rfilelist=[]   #存放匹配文件
        for root,dirs,files in os.walk(root):
                for name in files: 
                        filelist.append(os.path.join(root,name)) 
       #遍历路径文件下的所有文件夹,将所有文件放入filelist 
        for i in filelist:
                if os.path.isfile(i):
                        if keyword in os.path.basename(os.path.splitext(i)[0]):
                                rfilelist.append(i)
                        else:
                                pass
                else:
                        pass 
        return rfilelist

上述内容即为简单的关键字文件查找逻辑。

有时解压产生的文件数量众多,在获取所需数据后,我们希望将解压生成的文件进行清理删除,因此引入了删除解压文件的函数。

在此步骤中,首先需要导入shutil包。

import shutil 
#filelist  为解压出来的文件列表 
def  delete_unzip(filelist):
        thfile=filelist
        for i in thfile:
                shutil.rmtree(os.path.splitext(i)[0])

以下是Python删除文件或文件夹的具体实现方式。

使用Python执行删除文件或文件夹的操作。

此操作需要依赖os模块。

import os
os.remove(path)  # path是文件的路径,如果这个路径是一个文件夹,则会抛出OSError的错误,这时需用用rmdir()来删除
os.rmdir(path)  # path是文件夹路径,注意文件夹需要时空的才能被删除
os.unlink('F:\新建文本文档.txt')  # unlink的功能和remove一样是删除一个文件,但是删除一个删除一个正在使用的文件会报错。
import os
path = 'F:/新建文本文档.txt'  # 文件路径
if os.path.exists(path):  # 如果文件存在
    # 删除文件,可使用以下两种方法。
    os.remove(path)  
    #os.unlink(path)
else:
    print('no such file:%s'%my_file)  # 则返回文件不存在
import os
os.removedirs(path)  # 递归地删除目录。如果子目录成功被删除,则将会成功删除父目录,子目录没成功删除,将抛异常。
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

除此之外,还存在另一种实现方法。

import shutil
shutil.rmtree()

以上为个人经验分享,旨在提供参考,希望大家多多支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。