当前位置: 首页 > 编程笔记 >

python遍历文件夹,指定遍历深度与忽略目录的方法

姚俊材
2023-03-14
本文向大家介绍python遍历文件夹,指定遍历深度与忽略目录的方法,包括了python遍历文件夹,指定遍历深度与忽略目录的方法的使用技巧和注意事项,需要的朋友参考一下

背景

需要在文件夹中搜索某一文件,找到后返回此文件所在目录。用最常规的os.listdir()方式实现了一版,但执行时报错:递归超过最大深度。于是自己添加了点功能,之所有写此函数是为了让它适应不同的项目,因为有项目要找的文件在第一层,有的在第二层。

函数

功能:在文件夹中查找某一文件,找到后返回True与文件所在目录路径。

参数:filepath, 要查找的目录

参数:filename, 要查找的文件

扩展1:find_depth, 查找时指定递归深度;

扩展2:ignore_path, 查找时忽略某些目录;

#!/usr/bin/env python
# coding=utf-8
import os
# from fabric.colors import *

def find_file(self, filepath, filename, find_depth=1, ignore_path=['.git', 'node_modules']):
  """查找文件"""
  # print blue("当前查找目录:{},递归层级:{}".format(filepath, find_depth))
  # 递归深度控制
  find_depth -= 1
  for file_ in os.listdir(filepath):
    # print cyan("file: {}".format(file_))
    if isfile(join(filepath, file_)):
      # print "当前文件:{}".format(file_)
      if file_ == filename:
        return True, filepath
    elif find_depth <= 0: # 递归深度控制, 为0时退出
      # print yellow("超出递归深度,忽略!")
      continue
    elif file_ in ignore_path: # 忽略指定目录
      # print yellow("此目录在忽略列表中,跳过!")
      continue
    else:
      result, abs_path = self.find_file(filepath=join(filepath, file_),
                       filename=filename,
                       find_depth=find_depth)
      if result:
        print green("找到{}文件,所在路径{}".format(filename, abs_path))
        return result, abs_path
  return False, filepath

result, filepath = find_build(filepath="/data/deploy/jenkins/data/jobs/sit-zjims-mobile/workspace/", filename="gulpfile.js", find_depth=3)

以上这篇python遍历文件夹,指定遍历深度与忽略目录的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍Python实现深度遍历和广度遍历的方法,包括了Python实现深度遍历和广度遍历的方法的使用技巧和注意事项,需要的朋友参考一下 深度遍历: 原则:从上到下,从左到右 逻辑(本质用递归): 1)、找根节点 2)、找根节点的左边 3)、找根节点的右边 广度遍历: 核心:队列+递归 以上这篇Python实现深度遍历和广度遍历的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希

  • 我需要在网络驱动器上遍历一个目录,并在层次结构中创建子级到父级的映射。一个代表目录是6个Terrabytes,有90万个文件和900个文件夹。我只关心文件夹而不是文件。出于测试目的,我将没有文件的文件夹复制到另一个网络驱动器,并在复制的版本上运行代码。仅仅是在900个文件夹上迭代可能需要10秒。但是,迭代原始目录结构需要30分钟。我们似乎正在遍历所有90万个文件,尽管我们只是忽略它们。 有没有一种

  • 本文向大家介绍C#遍历指定目录下所有文件的方法,包括了C#遍历指定目录下所有文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#遍历指定目录下所有文件的方法。分享给大家供大家参考。具体分析如下: 先通过DirectoryInfo打开指定的目录,然后通过GetFiles()方法读取文件夹下的所有文件 希望本文所述对大家的C#程序设计有所帮助。

  • def deep(root): if not root: return print root.data deep(root.left) deep(root.right) if __name__ == '__main__': lookup(tree) deep(tree)

  • X1.4.0新增 sp_scan_dir($pattern,$flags) 功能: 替代scan_dir的方法 参数: $pattern:检索模式 搜索模式 .txt,.doc; (同glog方法) $flags:返回模式 同glog方法 返回: 类型数组 使用方法: //扫描application目录 $files=sp_scan_dir('application/*');//返回applic

  • 问题内容: 我需要遍历给定目录内的所有文件并对它们执行一些操作。 如何有效地做到这一点? 问题答案: 原始答案: 上面答案的Python 3.6版本,使用-假设你将目录路径作为str对象包含在名为的变量中: 或递归地使用: