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实现类继承实例
Jul 04 Python
独特的python循环语句
Nov 20 Python
Python判断文件或文件夹是否存在的三种方法
Jul 27 Python
python多任务及返回值的处理方法
Jan 22 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
Python浮点数四舍五入问题的分析与解决方法
Nov 19 Python
python装饰器原理与用法深入详解
Dec 19 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
Django实现列表页商品数据返回教程
Apr 03 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
Apr 14 Python
Pandas的数据过滤实现
Jan 15 Python
python中 Flask Web 表单的使用方法
May 20 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正则走开
2008/03/15 PHP
php,ajax实现分页
2008/03/27 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
php正则修正符用法实例详解
2016/12/29 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
Python实现的求解最大公约数算法示例
2018/05/03 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
购买大码女装:Lane Bryant
2016/09/07 全球购物
竞职演讲稿范文
2014/01/11 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
年终工作总结范文2014
2014/11/27 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
党校学习党性分析材料
2014/12/19 职场文书