python读取多层嵌套文件夹中的文件实例

由于工作安排,需要读取多层文件夹下嵌套的文件,文件夹的结构如下图所示:

想到了递归函数,使用python的os.path.isfile方法判断当前是不是可执行文件,如果不是再用os.listdir方法将子目录循环判断。

代码如下

import os
path = 'abc'
path_read = []  #path_read saves all executable files

def check_if_dir(file_path):
  temp_list = os.listdir(file_path)  #put file name from file_path in temp_list
  for temp_list_each in temp_list:
    if os.path.isfile(file_path + '/' + temp_list_each):
      temp_path = file_path + '/' + temp_list_each
      if os.path.splitext(temp_path)[-1] == '.log':  #自己需要处理的是.log文件所以在此加一个判断
        path_read.append(temp_path)
      else:
        continue
    else:
      check_if_dir(file_path + '/' + temp_list_each)  #loop traversal

check_if_dir(path)
#print(path_read)

实现思想就是把所有可执行文件的路径,通过字符串的拼接,完整的放进一个list中,在后面的执行步骤中依次提取进行访问和操作。

由于自己拿到的数据集中,一个文件夹下要么全是文件夹,要么全是文件,所以在第一次写这个函数时,通过temp_list[0] 直接判断list中第一个文件是不是文件。

所以自己第一次写的代码有一个很大的bug,就是当一个文件夹下既有文件夹又有文件的情况下,会尝试将一个文件夹按照文件读取,报错。

第一次代码如下:

import os
path = 'abc'
path_read = []  #path_read saves all executable files

def check_if_dir(file_path):
  temp_list = os.listdir(file_path)  #put file name from file_path in temp_list

  if os.path.isfile(file_path + '/' + temp_list[0]):  #此处直接判断list中第一项是不是文件
    for temp_list_each in temp_list:
      temp_path = file_path + '/' + temp_list_each
      if os.path.splitext(temp_path)[-1] == '.log':
        path_read.append(temp_path)
      else:
        continue
  else:
    for temp_list_each in temp_list:
      check_if_dir(file_path + '/' + temp_list_each)  #loop traversal

check_if_dir(path)  #put all path in path_read
#print(path_read)

以上这篇python读取多层嵌套文件夹中的文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python读取多层嵌套文件夹中的文件实例

    由于工作安排,需要读取多层文件夹下嵌套的文件,文件夹的结构如下图所示: 想到了递归函数,使用python的os.path.isfile方法判断当前是不是可执行文件,如果不是再用os.listdir方法将子目录循环判断. 代码如下 import os path = 'abc' path_read = [] #path_read saves all executable files def check_if_dir(file_path): temp_list = os.listdir(file_pa

  • linux 下python多线程递归复制文件夹及文件夹中的文件

    本文是利用python 复制文件夹 刚开始写了一个普通的递归复制文件夹    然后想了想 觉得对io频繁的程序 threading 线程还比较友好  就写了个多线程版本的  最恶心人的地方就是路径  其他都还好吧 import os import threading import multiprocessing length_of_folder = 0 def copyfile(Path): if os.path.isdir(Path): print("-----------%s" %

  • 解决Django删除migrations文件夹中的文件后出现的异常问题

    migrate文件记录了每一次数据迁移的改变 解决方法:重建数据库 1.删除数据库 错误方法: python manage.py shell from app.models import *Product.objects.raw('drop database') 上面删除数据库的方法是错误的 正确方法: 如果是用默认的sqlite数据库:可以直接右键,将db.sqlite3删掉. 如果用的其他数据库,则进入数据库的控制台,将数据库删掉 2.删除migrations中的文件,只保留__init__

  • bat如何延时删除指定文件夹中的文件

    本文介绍的是bat如何延时删除指定文件夹中的文件,下面话不多说了,有需要的来一起看看下面的详细内容. 一.bat延时 xp程序中通过ping 127.0.0.1 -n 20 来实现延时操作,ping本地地址20行. win7中通过timeout 20 来实现延时20秒. 二.删除指定文件 del /q d:\11\*.* 删除d:\11文件夹下的所有文件,并且不需要提示删除. /P 删除每一个文件之前提示确认. /F 强制删除只读文件. /S 从所有子目录删除指定文件. /Q 安静模式.删除全局

  • C#简单遍历指定文件夹中所有文件的方法

    本文实例讲述了C#简单遍历指定文件夹中所有文件的方法.分享给大家供大家参考,具体如下: C#遍历指定文件夹中的所有文件: DirectoryInfo TheFolder=new DirectoryInfo(folderFullName); //遍历文件夹 foreach(DirectoryInfo NextFolder in TheFolder.GetDirectories()) this.listBox1.Items.Add(NextFolder.Name); //遍历文件 foreach(F

  • C语言实现清空指定文件夹中所有文件的方法

    本文实例讲述了C语言实现清空指定文件夹中所有文件的方法.分享给大家供大家参考.具体分析如下: 最近笔者在做一个有关计算机视觉的项目,需要对提前的视频帧进行实验,当数据量很大且文件夹中的子文件夹和文件很多时,手工删除这些文件不现实,笔者今天写了一个程序,通过机器自动删除所有相关文件,十分快速,删除时间几乎可以不计. 代码如下,仅供参考. #include "iostream.h" //代码如需调试,只需将改成""即可 #include "string.h&q

  • C#编程实现获取文件夹中所有文件的文件名

    本文实例讲述了C#编程实现获取文件夹中所有文件的文件名.分享给大家供大家参考,具体如下: 想实现这样一个功能:批量修改一个目录所有jpg文件的文件名,在其原始基础上加上特定字符串 我先把一个目录里所有的格式为jpg的文件名存储到数组里,然后统一修改数组值来批量修改jpg文件的文件名 代码如下: using System; using System.IO; namespace ConsoleApplication7 { /// <summary> /// Class1 的摘要说明. /// &l

  • Android 遍历文件夹中所有文件的实例代码

    可以获得文件夹中所有文件的路径及文件名. 代码很简单,直接上车,车上再解释: /** * 获取指定目录内所有文件路径 * @param dirPath 需要查询的文件目录 * @param _type 查询类型,比如mp3什么的 */ public static JSONArray getAllFiles(String dirPath, String _type) { File f = new File(dirPath); if (!f.exists()) {//判断路径是否存在 return

  • python定时复制远程文件夹中所有文件

    本文实例为大家分享了python定时复制远程文件夹中文件的具体代码,供大家参考,具体内容如下 import os, shutil, sys import threading import configparser import datetime #复制文件 def remote_copy(src_path, dst_path): start_time = datetime.datetime.now() print(start_time, " 开始复制--") bCopy = False

  • Node.js 使用递归实现遍历文件夹中所有文件

    如标题所示,遍历文件夹下的所有文件,主要功能如下: 传入一个路径,读取路径里面所有的文件 遍历读取的文件,判断当前文件是文件还是文件夹 当前目录为文件,打印出当前文件绝对路径 当前目录为文件夹,获取文件夹路径,继续读取路径下文件 遍历完目录中的所有文件为止 代码中用到的几个方法 path.resolve(path) 一个路径或路径片段解析成一个绝对路径,返回解析后的路径字符串 fs.readdir(path[,option],callback) 读取目录下面的文件,返回目录下的文件列表对象,如果

随机推荐