python遍历文件夹,指定遍历深度与忽略目录的方法
作者:一个CD包 发布时间:2022-12-28 23:57:27
标签:python,遍历,文件夹
背景
需要在文件夹中搜索某一文件,找到后返回此文件所在目录。用最常规的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)
来源:https://blog.csdn.net/yu12377/article/details/77965905


猜你喜欢
- 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 1.概述ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,Cha
- 本文分析了PHP7新特性之抽象语法树(AST)带来的变化。分享给大家供大家参考,具体如下:这里大部分内容参照 AST 的 RFC 文档而成:
- 有时候我们会有这样的需求,需要把一些数据从别的库导入到另外的一个库中,而这些数据是用CSV文件存放的。对于MySql数据库我们有两种方式:一
- PDO::errorInfoPDO::errorCode — 返回最后一次操作数据库的错误信息(PHP 5 >= 5.1.0, PEC
- 安装了个5.5版本的mysql,字符集出现了问题,之前的mysql服务器都是通过在my.cnf配置文件中进行配置便可,可是今儿怎么着都不行一
- 代码'########### '检测远程文件是否存在 '########### function CheckURL(
- 1.简述:xlrd是读取excel表格数据;支持 xlsx和xls 格式的excel表格;三方模块安装方式:pip3 install xlr
- 开启Web服务1.基本方式Python中自带了简单的服务器程序,能较容易地打开服务。在python3中将原来的SimpleHTTPServe
- 在做数据挖掘的时候,想改一个DataFrame的column名称,所以就查了一下,总结如下:数据如下:>>>import
- 因此计划先把数据转插入一个临时表,再对临时表的数据进行分析。 问题点是如何动态创建临时表。原先Insus.NET使用下面代码实现: DECL
- uniapp页面跳转的几种方式一、uni.navigateTo定义:保留当前页面,跳转到应用内的某个页面,使用uni.navigateBac
- 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个
- 其实canvas本身很简单,就是去学习它的API,多看实例,多自己动手练习,多总结。但是canvas的API实在是有点多,对于初学者来说,可
- decimal 模块:decimal意思为十进制,这个模块提供了十进制浮点运算支持1.可以传递给Decimal整型或者字符串参数,但不能是浮
- 本文实例讲述了Python udp网络程序实现发送、接收数据功能。分享给大家供大家参考,具体如下:1. udp网络程序-发送数据创建一个基于
- 1、数据库架构1.1、MySQL 的基础架构图给面试官讲一下 MySQL 的逻辑架构,有白板可以把下面的图画一下,图片来源于网络。Mysql
- 如下所示:#先下载psutil库:pip install psutilimport psutilimport os,datetime,tim
- MySQL常用的四种引擎的介绍(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以sele
- 一。初识单元测试1)定义:单元:函数或者是类单元测试:测试类或者函数python内置的单元测试框架:unittest2)单元测试的意义好处: