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写的英文字符大小写转换代码示例
Mar 06 Python
详解Python函数作用域的LEGB顺序
May 14 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
基于python时间处理方法(详解)
Aug 14 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
python hough变换检测直线的实现方法
Jul 12 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
python 实现单通道转3通道
Dec 03 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
python 定义函数 返回值只取其中一个的实现
May 21 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/04 日漫
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php数据库备份还原类分享
2014/03/20 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
jQuery将表单序列化成一个Object对象的实例
2016/11/29 Javascript
详解jQuery选择器
2016/12/21 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
详解JavaScript作用域和作用域链
2019/03/19 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
常用python数据类型转换函数总结
2014/03/11 Python
python根据时间生成mongodb的ObjectId的方法
2015/03/13 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
使用requests库制作Python爬虫
2018/03/25 Python
PyQt5实现拖放功能
2018/04/25 Python
python 编码规范整理
2018/05/05 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
NumPy统计函数的实现方法
2020/01/21 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
获取邓白氏信用报告:Dun & Bradstreet
2019/01/22 全球购物
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
离婚被告答辩状
2015/05/22 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript