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 相关文章推荐
django自定义Field实现一个字段存储以逗号分隔的字符串
Apr 27 Python
python判断字符串是否包含子字符串的方法
Mar 24 Python
Python编程之属性和方法实例详解
May 19 Python
python监控linux内存并写入mongodb(推荐)
Sep 11 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
Python闭包函数定义与用法分析
Jul 20 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
Python爬取腾讯视频评论的思路详解
Dec 19 Python
python yield和Generator函数用法详解
Feb 10 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
Python基础类继承重写实现原理解析
Apr 03 Python
Python Selenium库的基本使用教程
Jan 04 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
[原创]php获取数组中键值最大数组项的索引值
2015/03/17 PHP
php简单实现快速排序的方法
2015/04/04 PHP
php经典算法集锦
2015/11/14 PHP
PHP获取数组中指定的一列实例
2017/12/27 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
python:socket传输大文件示例
2017/01/18 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
树莓派3 搭建 django 服务器的实例
2019/08/29 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
经典的班主任推荐信
2013/10/28 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
《一面五星红旗》教学反思
2016/02/23 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL
python面向对象版学生信息管理系统
2021/06/24 Python
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python