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闭包实现计数器的方法
May 05 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
django_orm查询性能优化方法
Aug 20 Python
python版大富翁源代码分享
Nov 19 Python
8种用Python实现线性回归的方法对比详解
Jul 10 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
简单的命令查看安装的python版本号
Aug 28 Python
Pycharm安装python库的方法
Nov 24 Python
Python快速优雅的批量修改Word文档样式
May 20 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
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php 类自动载入的方法
2015/06/03 PHP
分享php分页的功能模块
2015/06/16 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
javascript 解析url的search方法
2010/02/09 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
Vue scoped及deep使用方法解析
2020/08/01 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
解析python实现Lasso回归
2019/09/11 Python
Python super()方法原理详解
2020/03/31 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
python实现批量命名照片
2020/06/18 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
聋哑人盗窃罪辩护词
2015/05/21 职场文书
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android