python遍历文件夹下所有excel文件


Posted in Python onJanuary 03, 2018

大数据处理经常要用到一堆表格,然后需要把数据导入一个list中进行各种算法分析,简单讲一下自己的做法:

1.如何读取excel文件

网上的版本很多,在xlrd模块基础上,找到一些源码:

import xdrlib ,sys 
import xlrd 
def open_excel(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx"): 
    data = xlrd.open_workbook(file) 
    return data 
#根据索引获取Excel表格中的数据  参数:file:Excel文件路径   colnameindex:表头列名所在行的所以 ,by_index:表的索引 
def excel_table_byindex(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx",colnameindex=0,by_index=0): 
  data = open_excel(file) 
  table = data.sheets()[by_index] 
  nrows = table.nrows #行数 
  ncols = table.ncols #列数 
  colnames = table.row_values(colnameindex) #某一行数据 
  list =[] 
  for rownum in range(1,nrows): 
     row = table.row_values(rownum) 
     if row: 
       app = {} 
       for i in range(len(colnames)): 
        app[colnames[i]] = row[i] 
       list.append(app) 
  return list 
#根据名称获取Excel表格中的数据  参数:file:Excel文件路径   colnameindex:表头列名所在行的所以 ,by_name:Sheet1名称 
def excel_table_byname(file="C:/Users/flyminer/Desktop/新建 Microsoft Excel 工作表.xlsx",colnameindex=0,by_name=u'Sheet1'): 
  data = open_excel(file) 
  table = data.sheet_by_name(by_name) 
  nrows = table.nrows #行数 
  colnames = table.row_values(colnameindex) #某一行数据 
  list =[] 
  for rownum in range(1,nrows): 
     row = table.row_values(rownum) 
     if row: 
       app = {} 
       for i in range(len(colnames)): 
        app[colnames[i]] = row[i] 
       list.append(app) 
  return list 
 
def main(): 
  tables = excel_table_byindex() 
  for row in tables: 
    print(row) 
  tables = excel_table_byname() 
  for row in tables: 
    print(row) 
if __name__=="__main__": 
  main()

最后一句是重点,所以这里也给代码人点个赞!

最后一句让代码里的函数都可以被复用,简单地说:假设文件名是a,在程序中import a以后,就可以用a.excel_table_byname()和a.excel_table_byindex()这两个超级好用的函数了。

2.然后是遍历文件夹取得excel文件以及路径:,原创代码如下:

import os 
import xlrd 
import test_wy 
xpath="E:/唐伟捷/电力/电力系统总文件夹/舟山电力" 
xtype="xlsx" 
typedata = [] 
name = [] 
raw_data=[] 
file_path=[] 
def collect_xls(list_collect,type1): 
  #取得列表中所有的type文件 
  for each_element in list_collect: 
    if isinstance(each_element,list): 
      collect_xls(each_element,type1) 
    elif each_element.endswith(type1): 
       typedata.insert(0,each_element) 
  return typedata 
#读取所有文件夹中的xls文件 
def read_xls(path,type2): 
  #遍历路径文件夹 
  for file in os.walk(path): 
    for each_list in file[2]: 
      file_path=file[0]+"/"+each_list 
      #os.walk()函数返回三个参数:路径,子文件夹,路径下的文件,利用字符串拼接file[0]和file[2]得到文件的路径 
      name.insert(0,file_path) 
    all_xls = collect_xls(name, type2) 
  #遍历所有type文件路径并读取数据 
  for evey_name in all_xls: 
    xls_data = xlrd.open_workbook(evey_name) 
    for each_sheet in xls_data.sheets(): 
      sheet_data=test_wy.excel_table_byname(evey_name,0,each_sheet.name) 
      #请参考读取excel文件的代码 
      raw_data.insert(0, sheet_data) 
      print(each_sheet.name,":Data has been done.") 
  return raw_data 
a=read_xls(xpath,xtype) 
print("Victory")

欢迎各种不一样的想法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取各操作系统硬件信息的方法
Jun 03 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
Django组件之cookie与session的使用方法
Jan 10 Python
Django异步任务之Celery的基本使用
Mar 23 Python
Python整数对象实现原理详解
Jul 01 Python
pandas如何处理缺失值
Jul 31 Python
VSCode中自动为Python文件添加头部注释
Nov 14 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
通过代码简单了解django model序列化作用
Nov 12 Python
python自动生成sql语句的脚本
Feb 24 Python
Python将多份excel表格整理成一份表格
Jan 03 #Python
Python将多个excel文件合并为一个文件
Jan 03 #Python
python中的字典操作及字典函数
Jan 03 #Python
Python将多个excel表格合并为一个表格
Feb 22 #Python
使用Python+Splinter自动刷新抢12306火车票
Jan 03 #Python
Python实现简易Web爬虫详解
Jan 03 #Python
Python读取MRI并显示为灰度图像实例代码
Jan 03 #Python
You might like
php,不用COM,生成excel文件
2006/10/09 PHP
php下一个阿拉伯数字转中文数字的函数
2007/07/16 PHP
php实现快速排序法函数代码
2012/08/27 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
基于jquery的监控数据是否发生改变
2011/04/11 Javascript
Jquery validation remote 验证的缓存问题解决方法
2014/03/25 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
2017/06/13 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
2018/01/25 Javascript
详解如何在vue项目中使用eslint+prettier格式化代码
2018/11/10 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
Vue Router的手写实现方法实现
2020/03/02 Javascript
node koa2 ssr项目搭建的方法步骤
2020/12/11 Javascript
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
python实现操作文件(文件夹)
2019/10/31 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
wxPython实现绘图小例子
2019/11/19 Python
高中生的自我鉴定范文
2014/01/24 职场文书
党员教师工作决心书
2014/03/13 职场文书
高中学校对照检查材料
2014/08/31 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android