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爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
python从入门到精通(DAY 1)
Dec 20 Python
详解Python各大聊天系统的屏蔽脏话功能原理
Dec 01 Python
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
Jul 06 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
基于python的ini配置文件操作工具类
Apr 24 Python
python把转列表为集合的方法
Jun 28 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
详解python pandas 分组统计的方法
Jul 30 Python
如何基于Python实现数字类型转换
Feb 07 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Python 如何利用ffmpeg 处理视频素材
Nov 27 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
PHP 采集程序原理分析篇
2010/03/05 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
php检测文本的编码
2015/07/26 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
使用PHP开发留言板功能
2019/11/19 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
Python的Django框架中的数据过滤功能
2015/07/17 Python
python是否适合网页编程详解
2019/10/04 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
2020/09/30 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
Python Selenium XPath根据文本内容查找元素的方法
2020/12/07 Python
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
捷克家电和家具购物网站:OKAY.cz
2020/07/23 全球购物
银行领导证婚词
2014/01/11 职场文书
软件项目开发计划书
2014/05/01 职场文书
工厂见习报告范文
2014/10/31 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
浅谈Python协程asyncio
2021/06/20 Python
Python 快速验证代理IP是否有效的方法实现
2021/07/15 Python