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字典get()方法用法分析
Apr 17 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
举例讲解Python中的list列表数据结构用法
Mar 12 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
Oct 11 Python
python实现自动登录后台管理系统
Oct 18 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
python绘制规则网络图形实例
Dec 09 Python
pytorch+lstm实现的pos示例
Jan 14 Python
Python定义一个Actor任务
Jul 29 Python
pycharm中leetcode插件使用图文详解
Dec 07 Python
教你使用Pandas直接核算Excel中快递费用
May 12 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将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
微信营销平台系统?刮刮乐的开发
2014/06/10 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
Javascript调试工具(下载)
2007/01/09 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
js中获取 table节点各tr及td的内容简单实例
2016/10/14 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
Vue基础配置讲解
2019/11/29 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
Python中方法链的使用方法
2016/02/23 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
html5中audio支持音频格式的解决方法
2018/08/24 HTML / CSS
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
教导处工作制度
2014/01/18 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
助学贷款贫困证明
2014/09/23 职场文书
教师个人自我评价
2015/03/04 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
php引用传递
2021/04/01 PHP