当前位置: 首页 > news >正文

python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件

需求:近期,同事在处理文件的时候,常常需要从一堆文件中提取一些数据信息;

分析:由于每个文件夹下面的文件或文件夹多如牛毛,文件类型也很多种,需要针对不同文件类型做处理,人工处理是不现实的,只能用脚本处理了。

分析代码:

这里定义了一个类 ErgodicFolder,里面有两个方法 process_file 和 ergodic_path_list;

process_file:对不同文件类型进行处理;

ergodic_path_list:实现文件夹的遍历,先是逐个遍历目标文件夹,如果是文件则调用process_file 方法处理,如果是文件夹则调用函数自身继续遍历该文件夹。

# -*- coding:utf8 -*-

import os

# 定义一个遍历文件的方法

class ErgodicFolder:

def __init__(self):

pass

# 处理文件方法:针对不同文件类型做处理

def process_file(self, file):

FileType = file.split('.')[-1]

if FileType.lower() == 'xlsx': # 处理xlsx文件

print(os.getcwd()+os.sep+file)

if FileType.lower() == 'txt': # 处理txt文件

pass

if FileType.lower() == 'xlsx': # 处理pdf文件

pass

def ergodic_path_list(self, path):

os.chdir(path) # 进入到目标路径,类似命令行中的cd命令

file_lists = os.listdir() # 获取当前目录中所有文件夹和文件列表

for file in file_lists: # 遍历当前路径中的所有文件

if os.path.isfile(file): # 处理文件

self.process_file(file)

if os.path.isdir(file): # 如果是文件夹,则调用函数自身再次遍历该文件夹

self.ergodic_path_list(file)

# 当前文件夹遍历结束,返回上级目录继续遍历

os.chdir('..')

if __name__ == '__main__':

path = r'数据源'

E = ErgodicFolder()

E.ergodic_path_list(path)

本作品采用《CC 协议》,转载必须注明作者和本文链接

相关文章:

  • python去除视频中的logo_视频去水印神器(Easy Video Logo Remover)
  • MOSS 2007基础:内容类型(Content Type)
  • python 第三方包自动导入_Python第三方包的导入
  • SharePoint高级内容--访问群体对象模型的开发之一
  • php soap 两个版本_zabbix-第一章-第三节 LNMP之PHP搭建
  • SharePoint高级内容--访问群体对象模型的开发之二
  • 批量修改的后台代码_如何用WordPress自带的批量编辑功能修改文章分类目录?
  • postman压力测试_如何用Postman做接口自动化测试?
  • 编程访问“我的网站”中的目标链接门户列表
  • 你觉得外观模式和代理模式的联系和区别是什么?_清华毕业大牛带你深入研磨并掌握23种设计模式,总计6.17G...
  • MOSS 2007基础:开发自定义WebPart
  • tp 扫码点餐 源码_外卖点餐扫码点餐系统开发案例
  • MOSS 2007基础:部署自定义WebPart
  • google网页有一个上传文件的按钮怎么用python里面用click不能实现_PyHubWeekly | 第七期:5款Python小工具,最后一款会给你惊喜...
  • AJAX如何用于Web部件
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 2019.2.20 c++ 知识梳理
  • Brief introduction of how to 'Call, Apply and Bind'
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • Electron入门介绍
  • FineReport中如何实现自动滚屏效果
  • iOS 颜色设置看我就够了
  • javascript 总结(常用工具类的封装)
  • Javascript编码规范
  • LeetCode算法系列_0891_子序列宽度之和
  • LintCode 31. partitionArray 数组划分
  • pdf文件如何在线转换为jpg图片
  • PHP变量
  • Python打包系统简单入门
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Webpack 4 学习01(基础配置)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 判断客户端类型,Android,iOS,PC
  • 前端面试总结(at, md)
  • 深度学习中的信息论知识详解
  • 湖北分布式智能数据采集方法有哪些?
  • ​linux启动进程的方式
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • (BFS)hdoj2377-Bus Pass
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (一)appium-desktop定位元素原理
  • (原創) 物件導向與老子思想 (OO)
  • (转)编辑寄语:因为爱心,所以美丽
  • .NET 8.0 中有哪些新的变化?
  • .NET 指南:抽象化实现的基类
  • .NET 中创建支持集合初始化器的类型
  • .net连接oracle数据库
  • [ 数据结构 - C++]红黑树RBTree
  • []C/C++读取串口接收到的数据程序
  • [20171106]配置客户端连接注意.txt