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中for循环的使用
Apr 14 Python
Python实现的三层BP神经网络算法示例
Feb 07 Python
Python中XlsxWriter模块简介与用法分析
Apr 24 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
Python中函数参数匹配模型详解
Jun 09 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
python自动循环定时开关机(非重启)测试
Aug 26 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
python+requests接口自动化框架的实现
Aug 31 Python
Python数据可视化之绘制柱状图和条形图
May 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
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
js命名空间写法示例
2015/12/18 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
Vue render函数实战之实现tabs选项卡组件
2019/04/22 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
django使用xadmin的全局配置详解
2019/11/15 Python
HTML5标签大全
2016/11/23 HTML / CSS
美国在线宠物商店:Chewy
2019/01/12 全球购物
应届大学生的推荐信
2013/11/20 职场文书
白酒市场开发计划书
2014/01/09 职场文书
《自然之道》教学反思
2014/02/11 职场文书
家长对老师的评语
2014/04/18 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
投标邀请书范本
2015/02/02 职场文书
最美乡村教师观后感
2015/06/11 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
部门主管竞聘书
2015/09/15 职场文书