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

目录
  • 1. 文件夹结构
  • 2. 查找指定文件夹下指定文件
  • 3. 查找指定文件夹下所有相同名称的文件
  • 4. 查找指定文件夹下所有相同后缀名的文件

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查找指定文件夹内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python查找指定文件夹下所有文件并按修改时间倒序排列的方法

    代码如下: import os, glob, time def search_all_files_return_by_time_reversed(path, reverse=True): return sorted(glob.glob(os.path.join(path, '*')), key=lambda x: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(os.path.getctime(x))), reverse=revers

  • python系统指定文件的查找只输出目录下所有文件及文件夹

    修改python运行路径 import os os.chdir('C:/Users/86177/Desktop') os.chdir(r'C:\Users\86177\Desktop') os.chdir('C:\\Users\\86177\\Desktop') 路径加载连接的三种方式:'/'. '\' . r'' 获得当前python程序运行路径 import os print(os.getced()) 输出结果为:'C:\Users\86177\Desktop'(当前程序在的路径) pyth

  • 对Python 文件夹遍历和文件查找的实例讲解

    实例如下所示: # -*- coding: utf-8 -*- #to find where use the table on xxxxx xxxxxx production env ''' 在项目中我们元数据管理的不是很好,如果先知道一张表在哪里用过,就需要写个程序去遍历下 ''' import os import os.path rootdir = "C:\\Users\\IBM_ADMIN\\IBM\\rationalsdp\\workspace"# # 指明被遍历的文件夹 qu

  • python 查找文件夹下所有文件 实现代码

    复制代码 代码如下: def find_file_by_pattern(pattern='.*', base=".", circle=True): '''''查找给定文件夹下面所有 ''' re_file = re.compile(pattern) if base == ".": base = os.getcwd() final_file_list = [] print base cur_list = os.listdir(base) for item in cur

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

    目录 1. 文件夹结构 2. 查找指定文件夹下指定文件 3. 查找指定文件夹下所有相同名称的文件 4. 查找指定文件夹下所有相同后缀名的文件 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_f

  • python实现在目录中查找指定文件的方法

    本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 复制代码 代码如下: import os from glob import glob #用到了这个模块 def search_file(pattern, search_path=os.environ['PATH'], pathsep=os.pathsep):     for path in search_path.split(os.pathsep):         for mat

  • Python实现的根据文件名查找数据文件功能示例

    本文实例讲述了Python实现的根据文件名查找数据文件功能.分享给大家供大家参考,具体如下: #-*- coding: UTF-8 -*- import os import shutil AllFiles=[] NameFiles=[] def findFie(filePath): pathDir = os.listdir(filePath) for allDir in pathDir: # print(allDir) AllFiles.append(allDir) #pass #filepat

  • python实现指定文件夹下的指定文件移动到指定位置

    本文主要是写了一个将指定文件夹下的指定文件类型移动到指定位置,具体内容如下 # coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding('utf8') # print os.getcwd() # 有些文件夹下面有很多文件夹,每个文件夹下面有很多视频文件,现在通过脚本,将文件夹下面的所有文件转移到一个目录下面 # 统计访问的文件夹数量及文件数量 countNum = [0, ] count

  • 使用Python实现从各个子文件夹中复制指定文件的方法

    之前用来整理图片的小程序,拿来备忘,算是使用Python复制文件的一个例子. # -*- coding: utf-8 -*- #程序用来拷贝文件并输出图片采集日期等其他信息到Excel中 #文件夹结构: #2016_07_07 # -Data_07_07_001 # -Random1 # -image001_co.pgm # -image001_c1.pgm # -image002_co.pgm # -image002_c1.pgm # --- # -Random2 # --- # -Data_

  • python遍历文件目录、批量处理同类文件

    本文实例为大家分享了python遍历文件目录.批量处理同类文件的具体代码,供大家参考,具体内容如下 目录操作 1.获取当前目录 import os curr_path=os.path.dirname(__file__) #返回当前文件所在的目录,即当前运行的脚本所在父目录 print curr_path 运行示例 (1)使用os.path.dirname(__file__)时,是针对运行时对所给程序脚本的路径来获取父目录的,即截取你输入的脚本路径的所在目录名称,如上图示例,输入绝对路径时返回绝对

  • python 遍历目录(包括子目录)下所有文件的实例

    如下所示: def list_all_files(rootdir): import os _files = [] list = os.listdir(rootdir) #列出文件夹下所有的目录与文件 for i in range(0,len(list)): path = os.path.join(rootdir,list[i]) if os.path.isdir(path): _files.extend(list_all_files(path)) if os.path.isfile(path):

  • Python通过递归获取目录下指定文件代码实例

    这篇文章主要介绍了python通过递归获取目录下指定文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 获取一个目录下所有指定格式的文件是实际生产中常见需求. import os #递归获取一个目录下所有的指定格式的文件 def get_jsonfile(path,file_list): dir_list=os.listdir(path) for x in dir_list: new_x=os.path.join(path,x) if

  • Python遍历某目录下的所有文件夹与文件路径

    本文与<[Java]读取其下所有文件夹与文件的路径>(点击打开链接)为姊妹篇,主要讲述Python对于文件信息的读取操作. Python对于文件信息的读取操作,在其固有类os中. 下面以读取F盘下的所有文件夹作为例子说明这个问题: Python对于文件夹的遍历有两种写法,一种是直接利用其封装好的walk方法直接操作. 这是Python做得比Java优势的地方: # -*-coding:utf-8-*- import os for root,dirs,files in os.walk("

随机推荐