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实现获取某天是某个月中的第几周
Feb 11 Python
Python解决走迷宫问题算法示例
Jul 27 Python
Python使用googletrans报错的解决方法
Sep 25 Python
Python对切片命名的实现方法
Oct 16 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
Python中的list与tuple集合区别解析
Oct 12 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
python如何处理程序无法打开
Jun 16 Python
Python打印不合法的文件名
Jul 31 Python
python dict如何定义
Sep 02 Python
pytorch 中nn.Dropout的使用说明
May 20 Python
Python实现数据的序列化操作详解
Jul 07 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游戏编程25个脚本代码
2011/02/08 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PDO的安全处理与事物处理方法
2016/10/31 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
Prototype Selector对象学习
2009/07/23 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
2019/03/16 jQuery
JS 5种遍历对象的方式
2020/06/16 Javascript
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
python实现井字棋小游戏
2020/03/04 Python
基于Python组装jmx并调用JMeter实现压力测试
2020/11/03 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
EJB面试题
2015/07/28 面试题
寒假实习自荐信
2014/01/26 职场文书
搞笑创意广告语
2014/03/17 职场文书
师范类求职信
2014/06/21 职场文书
开发房地产协议书
2014/09/14 职场文书
抄袭同学作业检讨书1000字
2014/11/20 职场文书
博士给导师的自荐信
2015/03/06 职场文书