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 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
Python实现按学生年龄排序的实际问题详解
Aug 29 Python
python判断字符串是否是json格式方法分享
Nov 07 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
python语言中with as的用法使用详解
Feb 23 Python
Python编程flask使用页面模版的方法
Dec 28 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Python中and和or如何使用
May 28 Python
Python面向对象特殊属性及方法解析
Sep 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
深入array multisort排序原理的详解
2013/06/18 PHP
支持png透明图片的php生成缩略图类分享
2015/02/08 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
详解JavaScript的另类写法
2016/04/11 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
jQuery实现可拖动进度条实例代码
2017/06/21 jQuery
详解使用vue实现tab 切换操作
2017/07/03 Javascript
jquery之基本选择器practice(实例讲解)
2017/09/30 jQuery
微信小程序实现获取自己所处位置的经纬度坐标功能示例
2017/11/30 Javascript
Node.js事件的正确使用方法
2019/04/05 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python通过zabbix api获取主机
2018/09/17 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
用python写爬虫简单吗
2020/07/28 Python
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
英语教师自荐信
2014/05/26 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
教学质量月活动总结
2015/05/11 职场文书