使用Python遍历文件夹实现查找指定文件夹

 更新时间:2022年07月28日 16:28:06   作者:将冲破艾迪i  
这篇文章主要为大家介绍了如何使用Python遍历文件夹从而实现查找指定文件夹下所有相同名称的文件、所有相同后缀名的文件,感兴趣的可以了解一下

1. 文件夹结构

指定文件夹:E:/Code/Python/test

指定文件:test.txt

指定文件夹下的目录及文件:

文件夹a:

a.txt

test.txt

文件夹txt:

test.txt

文件b.txt

test.py

test.txt

2. 查找指定文件夹下指定文件

import os

# 查找该层文件夹下指定文件
def search_file(dirPath, fileName):
    dirs = os.listdir(dirPath) # 查找该层文件夹下所有的文件及文件夹,返回列表
    for currentFile in dirs: # 遍历列表
        absPath = dirPath + '/' + currentFile # 文件的绝对路径
        if currentFile == fileName:
             print(absPath) 
           
if __name__ == "__main__":
    dirPath = 'E:/Code/Python/test'
    fileName = 'test.txt'
    search_file(dirPath, fileName)
              

执行结果:

E:/Code/Python/test/test.txt

3. 查找指定文件夹下所有相同名称的文件

import os

# 查找指定文件夹下所有相同名称的文件
def search_file(dirPath, fileName):
    dirs = os.listdir(dirPath) # 查找该层文件夹下所有的文件及文件夹,返回列表
    for currentFile in dirs: # 遍历列表
        absPath = dirPath + '/' + currentFile 
        if os.path.isdir(absPath): # 如果是目录则递归,继续查找该目录下的文件
            search_file(absPath, fileName)
        elif currentFile == fileName:
            print(absPath) # 文件存在,则打印该文件的绝对路径

if __name__ == "__main__":
    dirPath = 'E:/Code/Python/test'
    fileName = 'test.txt'
    search_file(dirPath, fileName)

执行结果:

E:/Code/Python/test/a/test.txt
E:/Code/Python/test/test.txt    
E:/Code/Python/test/txt/test.txt

4. 查找指定文件夹下所有相同后缀名的文件

import os

# 查找指定文件夹下所有相同后缀名的文件
def search_file_suffix(dirPath, suffix):
    dirs = os.listdir(dirPath)
    for currentFile in dirs:
        absPath = dirPath + '/' + currentFile
        if os.path.isdir(absPath):
            search_file_suffix(absPath, suffix)
        elif currentFile.split('.')[-1] == suffix: # 文件后缀名相同,则打印该文件的绝对路径
            print(absPath)

if __name__ == "__main__":
    dirPath = 'E:/Code/Python/test'
    suffix = 'txt'
    search_file_suffix(dirPath, suffix)
      

执行结果:

E:/Code/Python/test/a/a.txt
E:/Code/Python/test/a/test.txt  
E:/Code/Python/test/b.txt       
E:/Code/Python/test/test.txt    
E:/Code/Python/test/txt/test.txt

以下是需要注意的避坑点:

1.注意避坑 - 递归函数的位置:查找相同后缀名的文件时,递归调用必须放在if里,而不能放在elif里,否则当文件夹名称与文件后缀名相同时,会出错。

如:查找txt后缀的文件,刚好又有一个txt的文件夹,因为递归放在了elif里,那么遍历会停在txt文件夹,而不去遍历txt文件夹里的内容。

import os

# 查找指定文件夹下所有相同后缀名的文件
def search_file_suffix(dirPath, suffix):
    dirs = os.listdir(dirPath)
    for currentFile in dirs:
        absPath = dirPath + '/' + currentFile
        if os.path.isdir(absPath):
            search_file_suffix(absPath, suffix)
        elif currentFile.split('.')[-1] == suffix: # 文件后缀名相同,则打印该文件的绝对路径
            print(absPath)

def search_file_suffix_temp(dirPath, suffix):
    dirs = os.listdir(dirPath)
    for currentFile in dirs:
        absPath = dirPath + '/' + currentFile
        if currentFile.split('.')[-1] == suffix: 
            print(absPath)
        elif os.path.isdir(absPath): # 递归判断放在elif里
            search_file_suffix_temp(absPath, suffix)

if __name__ == "__main__":
    dirPath = 'E:/Code/Python/test'
    suffix = 'txt'
    search_file_suffix(dirPath, suffix)
    print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    search_file_suffix_temp(dirPath, suffix)

执行结果:

E:/Code/Python/test/a/a.txt
E:/Code/Python/test/a/test.txt  
E:/Code/Python/test/b.txt       
E:/Code/Python/test/test.txt    
E:/Code/Python/test/txt/test.txt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:/Code/Python/test/a/a.txt     
E:/Code/Python/test/a/test.txt  
E:/Code/Python/test/b.txt       
E:/Code/Python/test/test.txt
E:/Code/Python/test/txt

2.注意避坑 - .vscode文件夹:在使用vscode打开文件夹时,会自动生成.vscode文件夹,如果查找文件的时候不想查找这些配置文件夹里的文件,那么需要在判断文件夹后,再加一层判断,遇到.vscode或者其他配置文件夹就跳过。

import os
from fnmatch import fnmatchcase

# 查找指定文件夹下所有相同后缀名的文件
def search_file_suffix(dirPath, suffix):
    dirs = os.listdir(dirPath)
    for currentFile in dirs:
        absPath = dirPath + '/' + currentFile
        if os.path.isdir(absPath):
            search_file_suffix(absPath, suffix)
        elif currentFile.split('.')[-1] == suffix: # 文件后缀名相同,则打印该文件的绝对路径
            print(absPath)

def search_file_suffix_temp(dirPath, suffix):
    dirs = os.listdir(dirPath)
    for currentFile in dirs:
        absPath = dirPath + '/' + currentFile
        if os.path.isdir(absPath):
            if fnmatchcase(currentFile,'.*'): # 如果文件夹是.vscode或者其他.开头的文件夹,就跳过
                pass
            else:
                search_file_suffix(absPath, suffix)
        elif currentFile.split('.')[-1] == suffix: 
            print(absPath)

if __name__ == "__main__":
    dirPath = 'E:/Code/python/test'
    suffix = 'json'
    search_file_suffix(dirPath, suffix)
    print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
    search_file_suffix_temp(dirPath, suffix)    

执行结果:

E:/Code/python/test/.vscode/settings.json
E:/Code/python/test/a.json
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:/Code/python/test/a.json

到此这篇关于使用Python遍历文件夹实现查找指定文件夹的文章就介绍到这了,更多相关Python查找指定文件夹内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python基础之并发编程(二)

    python基础之并发编程(二)

    这篇文章主要介绍了详解python的并发编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-10-10
  • python生成遍历暴力破解密码的方法

    python生成遍历暴力破解密码的方法

    本文主要介绍了python生成遍历暴力破解密码的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • torchtext入门教程必看,带你轻松玩转文本数据处理

    torchtext入门教程必看,带你轻松玩转文本数据处理

    这篇文章主要介绍了torchtext入门教程必看,带你轻松玩转文本数据处理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python大批量写入数据(百万级别)的方法

    Python大批量写入数据(百万级别)的方法

    这篇文章主要给大家介绍了关于Python大批量写入数据(百万级别)的相关资料,在日常处理数据的过程中,我们都有批量写入数据的需求,文中给出了详细的示例代码,需要的朋友可以参考下
    2023-07-07
  • pytorch固定BN层参数的操作

    pytorch固定BN层参数的操作

    这篇文章主要介绍了pytorch固定BN层参数的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python图像阈值化处理及算法比对实例解析

    Python图像阈值化处理及算法比对实例解析

    这篇文章主要介绍了Python图像阈值化处理及算法比对实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • python bluetooth蓝牙信息获取蓝牙设备类型的方法

    python bluetooth蓝牙信息获取蓝牙设备类型的方法

    这篇文章主要介绍了python bluetooth蓝牙信息获取蓝牙设备类型的方法,具体转化方法文中给大家介绍的非常详细,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Python把excel文件数据转化为字典格式存储详解

    Python把excel文件数据转化为字典格式存储详解

    这篇文章主要介绍了Python把excel文件数据转化为字典格式存储详解,在Python中有时候需要操作excel表格的数据,把excel表格转化为字典存起来,方便读取,今天我们就来看看如何转换,需要的朋友可以参考下
    2023-08-08
  • Python+seaborn实现联合分布图的绘制

    Python+seaborn实现联合分布图的绘制

    联合分布(Joint Distribution)图是一种查看两个或两个以上变量之间两两相互关系的可视化图,在数据分析操作中经常需要用到。本文将通过seaborn实现绘制联合分布图,需要的可以参考一下
    2023-02-02
  • Python获取数据库数据并保存在excel表格中的方法

    Python获取数据库数据并保存在excel表格中的方法

    今天小编就为大家分享一篇Python获取数据库数据并保存在excel表格中的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论