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 相关文章推荐
利用Celery实现Django博客PV统计功能详解
May 08 Python
python笔记:mysql、redis操作方法
Jun 28 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
在Python 字典中一键对应多个值的实例
Feb 03 Python
对python3中的RE(正则表达式)-详细总结
Jul 23 Python
Django打印出在数据库中执行的语句问题
Jul 25 Python
python中property和setter装饰器用法
Dec 19 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
Python 2.6.6升级到Python2.7.15的详细步骤
Dec 14 Python
关于python中readlines函数的参数hint的相关知识总结
Jun 24 Python
Python机器学习实战之k-近邻算法的实现
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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
node.js中的fs.existsSync方法使用说明
2014/12/17 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
vue2.0自定义指令示例代码详解
2019/04/25 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
css3通过scale()、rotate()实现放大、旋转
2020/03/19 HTML / CSS
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
与美同行演讲稿
2014/09/13 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
合理化建议书
2015/02/04 职场文书
催款函怎么写
2015/06/24 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
Mysql事务索引知识汇总
2022/03/17 MySQL
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫