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


Posted in Python onJuly 11, 2018

背景

需要在文件夹中搜索某一文件,找到后返回此文件所在目录。用最常规的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的unittest测试类代码实例
Dec 07 Python
python方向键控制上下左右代码
Jan 20 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
Mar 15 Python
python3+PyQt5+Qt Designer实现扩展对话框
Apr 20 Python
Sanic框架路由用法实例分析
Jul 16 Python
Python替换月份为英文缩写的实现方法
Jul 15 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python实现低通滤波器代码
Feb 26 Python
详解python模块pychartdir安装及导入问题
Oct 22 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 #Python
Python批处理删除和重命名文件夹的实例
Jul 11 #Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 #Python
通过python顺序修改文件名字的方法
Jul 11 #Python
对python3 一组数值的归一化处理方法详解
Jul 11 #Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 #Python
Python实现基于PIL和tesseract的验证码识别功能示例
Jul 11 #Python
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
2019/09/10 Javascript
js验证账户名是否重复
2020/05/26 Javascript
ansible作为python模块库使用的方法实例
2017/01/17 Python
Python中的 enum 模块源码详析
2019/01/09 Python
Python docx库用法示例分析
2019/02/16 Python
python实战串口助手_解决8串口多个发送的问题
2019/06/12 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
新东网科技Java笔试题
2012/07/13 面试题
linux下进程间通信的方式
2014/12/23 面试题
工程测量与监理专业应届生求职信
2013/11/27 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
认购协议书范本
2014/04/22 职场文书
简历中自我评价范文
2015/03/11 职场文书
2015年派出所工作总结
2015/04/24 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
详解Redis瘦身指南
2021/05/26 Redis
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL