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中定义结构体的方法
Mar 04 Python
python中as用法实例分析
Apr 30 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
使用Django和Python创建Json response的方法
Mar 26 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
Django中的静态文件管理过程解析
Aug 01 Python
pytorch实现Tensor变量之间的转换
Feb 17 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python虚拟环境的创建和包下载过程分析
Jun 19 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
Oct 30 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
php+ajax实现文章自动保存的方法
2014/12/30 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
2016/04/21 PHP
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
web打印小结
2017/01/11 Javascript
div中文字内容溢出常见的解决方法
2017/03/16 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
实例解析ES6 Proxy使用场景介绍
2018/01/08 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
node.js的Express服务器基本使用教程
2019/01/09 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
Python 随机按键模拟2小时
2020/12/30 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
中学生逃课检讨书
2015/02/17 职场文书
借条如何写
2015/05/26 职场文书
学习委员竞选稿
2015/11/20 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
Python字符串格式化方式
2022/04/07 Python
搭建Yolov5服务器
2022/04/30 Servers