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 相关文章推荐
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
python实现类之间的方法互相调用
Apr 29 Python
python+unittest+requests实现接口自动化的方法
Nov 29 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
Python中请不要再用re.compile了
Jun 30 Python
Django 外键的使用方法详解
Jul 19 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
Aug 13 Python
python实现录屏功能(亲测好用)
Mar 02 Python
python实现超级玛丽游戏
Mar 18 Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 Python
Python安装并操作redis实现流程详解
Oct 13 Python
浅析Python的命名空间与作用域
Nov 25 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
Yii2数据库操作常用方法小结
2017/05/04 PHP
PHP结合Vue实现滚动底部加载效果
2017/12/17 PHP
什么是JavaScript
2009/08/13 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
js中有关IE版本检测
2012/01/04 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
js检测判断日期大于多少天的方法
2015/05/04 Javascript
基于JavaScript实现一定时间后去执行一个函数
2015/12/14 Javascript
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
python 性能优化方法小结
2017/03/31 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
Python读写文件基础知识点
2019/06/10 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
python 常见的排序算法实现汇总
2020/08/21 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
50道外企软件测试面试题
2014/08/18 面试题
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
导游词之无锡古运河
2019/11/14 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis