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中的exec、eval使用实例
Sep 23 Python
python人人网登录应用实例
Sep 26 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
Jun 27 Python
Python判断两个对象相等的原理
Dec 12 Python
python实现隐马尔科夫模型HMM
Mar 25 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
python代码编写计算器小程序
Mar 30 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
Python模块future用法原理详解
Jan 20 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 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
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP获取客户端及服务器端IP的封装类
2016/07/21 PHP
laravel-admin 实现给grid的列添加行数序号的方法
2019/10/08 PHP
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
JS动画实现回调地狱promise的实例代码详解
2018/11/08 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
python实现维吉尼亚算法
2019/03/20 Python
Python 获取 datax 执行结果保存到数据库的方法
2019/07/11 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
MoviePy简介及Python视频剪辑自动化
2020/12/18 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
群众路线批评与自我批评
2014/02/06 职场文书
信息技术培训感言
2014/03/06 职场文书
施工员岗位职责
2014/03/16 职场文书
终止合同协议书
2014/04/17 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js