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中条件判断语句的简单使用方法
Aug 21 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
你真的了解Python的random模块吗?
Dec 12 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Python实现Event回调机制的方法
Feb 13 Python
Python玩转加密的技巧【推荐】
May 13 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
详解python中__name__的意义以及作用
Aug 07 Python
详解用python计算阶乘的几种方法
Aug 14 Python
python新式类和经典类的区别实例分析
Mar 23 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
python中delattr删除对象方法的代码分析
Dec 15 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
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
Yii快速入门经典教程
2015/12/28 PHP
php封装的验证码类分享
2017/02/26 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
2019/10/20 PHP
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
用dtree实现树形菜单 dtree使用说明
2011/10/17 Javascript
五段实用的js高级技巧
2011/12/20 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
使用jQuery实现的网页版的个人简历(可换肤)
2013/04/19 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
vuex实现简易计数器
2016/10/27 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
实现微信小程序的wxml文件和wxss文件在webstrom的支持
2017/06/12 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
跟老齐学Python之Python安装
2014/09/12 Python
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
Python单元测试实例详解
2018/05/25 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Python中函数参数匹配模型详解
2019/06/09 Python
python 通过邮件控制实现远程控制电脑操作
2020/03/16 Python
鱼油专家:Omegavia
2016/10/10 全球购物
中层干部竞争上岗演讲稿
2014/01/13 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
2015年少先队活动总结
2015/03/25 职场文书
靠谱准确的求职信
2019/04/02 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
为什么 Nginx 比 Apache 更牛逼
2021/03/31 Servers