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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
Python re模块介绍
Nov 30 Python
python django 实现验证码的功能实例代码
May 18 Python
[原创]python爬虫(入门教程、视频教程)
Jan 08 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
python实现朴素贝叶斯算法
Nov 19 Python
连接pandas以及数组转pandas的方法
Jun 28 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
Jan 15 Python
Python通过正则库爬取淘宝商品信息代码实例
Mar 02 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
Pytorch 使用CNN图像分类的实现
Jun 16 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编写PDF文档生成器
2006/10/09 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
在PHP中使用反射技术的架构插件使用说明
2010/05/18 PHP
js parsefloat parseint 转换函数
2010/01/21 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
JavaScript实现倒计时代码段Item1(非常实用)
2015/11/03 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
node.js实现登录注册页面
2017/04/08 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
跟老齐学Python之眼花缭乱的运算符
2014/09/14 Python
python中map、any、all函数用法分析
2015/04/21 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python引用传值概念与用法实例小结
2017/10/07 Python
浅谈flask源码之请求过程
2018/07/26 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
Python内存映射文件读写方式
2020/04/24 Python
记者岗位职责
2014/01/06 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
《打电话》教学反思
2016/02/22 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS