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网络编程学习笔记(二):socket建立网络客户端
Jun 09 Python
python实现的登录和操作开心网脚本分享
Jul 09 Python
Python语言实现获取主机名根据端口杀死进程
Mar 31 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
python+selenium实现QQ邮箱自动发送功能
Jan 23 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
cProfile Python性能分析工具使用详解
Jul 22 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
基于python实现图片转字符画代码实例
Sep 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
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
PHP URL路由类实例
2013/11/12 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
javascript中eval解析JSON字符串
2016/02/27 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
2017/01/25 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
React Native登录之指纹登录篇的示例代码
2020/11/03 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
Python中类的继承代码实例
2014/10/28 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
老公给老婆的道歉信
2014/01/10 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
超市促销活动总结
2014/07/01 职场文书
办理房产证委托书
2014/09/18 职场文书
美丽心灵观后感
2015/06/01 职场文书
纪录片信仰观后感
2015/06/08 职场文书
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏