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


Posted in Python onFebruary 27, 2020

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

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读取多层嵌套文件夹中的文件实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算最小优先级队列代码分享
Dec 18 Python
go语言计算两个时间的时间差方法
Mar 13 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
python实现redis三种cas事务操作
Dec 19 Python
python实现外卖信息管理系统
Jan 11 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
Flask模板引擎之Jinja2语法介绍
Jun 26 Python
python爬虫 爬取超清壁纸代码实例
Aug 16 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
python统计文章中单词出现次数实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 #Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 #Python
Python如何使用OS模块调用cmd
Feb 27 #Python
python之生成多层json结构的实现
Feb 27 #Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 #Python
You might like
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
PHP 开源AJAX框架14种
2009/08/24 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
PHP数组实例详解
2016/06/26 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
Angular 页面跳转时传参问题
2016/08/01 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
2017/12/16 jQuery
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
JS获取当前时间的实例代码(昨天、今天、明天)
2018/11/13 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
[49:08]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
简单介绍Python中的JSON模块
2015/04/08 Python
django实现分页的方法
2015/05/26 Python
Python教程之全局变量用法
2016/06/27 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
水产养殖学应届生求职信
2013/09/29 职场文书
小学美术教学反思
2014/02/01 职场文书
仓管岗位职责范本
2014/02/08 职场文书
纠风工作实施方案
2014/03/15 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
六一活动主持词
2015/06/30 职场文书
导游词之淮安明祖陵
2019/11/25 职场文书