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 相关文章推荐
Flask框架Flask-Principal基本用法实例分析
Jul 23 Python
pandas 将索引值相加的方法
Nov 15 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python 求数组局部最大值的实例
Nov 26 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
Python @property装饰器原理解析
Jan 22 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 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将数据导入到Foxmail的实现代码
2010/09/05 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
鼠标滑过出现预览的大图提示效果
2014/02/26 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
2015/10/30 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
浅谈python中的正则表达式(re模块)
2017/10/17 Python
Python实现感知器模型、两层神经网络
2017/12/19 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
python主线程捕获子线程的方法
2018/06/17 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
Linux的文件类型
2012/03/07 面试题
高三语文教学反思
2014/01/15 职场文书
大学班级计划书
2014/04/29 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
党员剖析材料范文
2014/12/18 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
医院消毒隔离制度
2015/08/05 职场文书
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python