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判定IP地址合法性的三种方法
Mar 06 Python
python读取几个G的csv文件方法
Jan 07 Python
python实现代码统计器
Sep 19 Python
python安装scipy的步骤解析
Sep 28 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
python:动态路由的Flask程序代码
Nov 22 Python
python实现TCP文件传输
Mar 20 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
python 算法题——快乐数的多种解法
May 27 Python
Python 键盘事件详解
Nov 11 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
收音机术语解释
2021/03/01 无线电
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
2014/05/15 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python 合并文件的具体实例
2013/08/08 Python
python实现文件名批量替换和内容替换
2014/03/20 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
详解Python多线程
2016/11/14 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
Html5实现单张、多张图片上传功能
2019/04/28 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
澳洲的服装老品牌:SABA
2018/02/06 全球购物
安全责任协议书
2014/04/21 职场文书
财务管理专业毕业生求职信
2014/06/02 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
用Python简陋模拟n阶魔方
2021/04/17 Python
ztree+ajax实现文件树下载功能
2021/05/18 Javascript
Redis 哨兵机制及配置实现
2022/03/25 Redis
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang