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 + openpyxl处理excel2007文档思路以及心得
Jul 14 Python
详解Python装饰器由浅入深
Dec 09 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
Python实现一个简单的验证码程序
Nov 03 Python
Python通用循环的构造方法实例分析
Dec 19 Python
用python一行代码得到数组中某个元素的个数方法
Jan 28 Python
Pytorch之保存读取模型实例
Dec 30 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
基于python实现MQTT发布订阅过程原理解析
Jul 27 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 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
基于mysql的论坛(7)
2006/10/09 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
2014/07/15 PHP
PHP时间类完整实例(非常实用)
2015/12/25 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
JavaScript实现的Tween算法及缓冲特效实例代码
2015/11/03 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
js数组的基本使用总结
2021/01/18 Javascript
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
python设置windows桌面壁纸的实现代码
2013/01/28 Python
python实现2014火车票查询代码分享
2014/01/10 Python
利用python程序帮大家清理windows垃圾
2017/01/15 Python
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
Flask框架配置与调试操作示例
2018/07/23 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
求∏的近似值,直到最后一项的绝对值小于指定的数
2016/02/12 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
房产公证委托书范本
2014/09/20 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫