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

 更新时间:2018年07月11日 14:44:23   作者:一个CD包  
今天小编就为大家分享一篇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 异步如何使用等待有时间限制协程

    这篇文章主要为大家介绍了Python 异步如何使用等待有时间限制协程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 基于Python3.6+splinter实现自动抢火车票

    基于Python3.6+splinter实现自动抢火车票

    这篇文章主要为大家详细介绍了基于Python3.6+splinter实现自动抢火车票,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Python中re.compile函数的使用方法

    Python中re.compile函数的使用方法

    这篇文章主要介绍在python的re模块中怎样应用正则表达式,文中有相关的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-06-06
  • 浅析PEP570新语法: 只接受位置参数

    浅析PEP570新语法: 只接受位置参数

    本文通过一个例子给大家介绍了PEP570新语法: 只接受位置参数的一些知识,感兴趣的朋友跟随小编一起看看吧
    2019-10-10
  • pyqt5圆形label显示打开的摄像头功能

    pyqt5圆形label显示打开的摄像头功能

    本文主要给大家讲解如何使用pyqt5打开摄像头并在label上显示,以及优化成圆形label框。通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • windows下Python实现将pdf文件转化为png格式图片的方法

    windows下Python实现将pdf文件转化为png格式图片的方法

    这篇文章主要介绍了windows下Python实现将pdf文件转化为png格式图片的方法,结合实例形式较为详细的分析了Python实现将pdf转换为png格式的相关模块、使用方法与相关注意事项,需要的朋友可以参考下
    2017-07-07
  • python 实现客户端与服务端的通信

    python 实现客户端与服务端的通信

    这篇文章主要介绍了python 实现客户端与服务端的通信的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • 使用pycharm创建Django项目失败的解决方案

    使用pycharm创建Django项目失败的解决方案

    使用PyCharm创建Django项目时遇到无法运行的问题,可以检查Python的安装路径设置是否正确,在PyCharm的设置中找到项目解释器的位置,确保路径正确,如果不确定Python的安装位置,可以在命令提示符中使用“where Python”命令查询
    2024-09-09
  • IDA Pro 6.0使用Qt框架实现了跨平台的UI界面

    IDA Pro 6.0使用Qt框架实现了跨平台的UI界面

    通过本文带领大家学习如何使用PySide使用IDAPython为 IDA Pro 创建 UI 界面,对IDA Pro 6.0使用Qt 框架实现了跨平台的UI相关知识感兴趣的朋友一起看看吧
    2021-07-07
  • Python colorama 彩色打印实现代码

    Python colorama 彩色打印实现代码

    这篇文章主要介绍了Python colorama 彩色打印实现代码,将介绍的类为Back, 它实现了与 Fore 类相同的九个关键字:BLACK、RED、GREEN、YELLOW、BLUE、MAGENTA、CYAN、WHITE、RESET,感兴趣的朋友一起看看吧
    2022-04-04

最新评论