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中使用wxPython开发的一个简易笔记本程序实例
Feb 08 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
Jan 20 Python
详解Python迭代和迭代器
Mar 28 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
python实现按长宽比缩放图片
Jun 07 Python
python实现自动登录后台管理系统
Oct 18 Python
对Python之gzip文件读写的方法详解
Feb 08 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
selenium判断元素是否存在的两种方法小结
Dec 07 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使用ereg验证文件上传的方法
2014/12/16 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP编程中尝试程序并发的几种方式总结
2016/03/21 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
JQuery简单实现锚点链接的平滑滚动
2015/05/03 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
python调用新浪微博API项目实践
2014/07/28 Python
Python输出9*9乘法表的方法
2015/05/25 Python
python套接字流重定向实例汇总
2016/03/03 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
对Python3中的input函数详解
2018/04/22 Python
flask中过滤器的使用详解
2018/08/01 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
Django web框架使用url path name详解
2019/04/29 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
Python基于requests库爬取网站信息
2020/03/02 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
为什么要做架构设计
2015/07/08 面试题
安全生产投入制度
2014/01/29 职场文书
优秀员工演讲稿
2014/05/19 职场文书
安全标语口号
2014/06/09 职场文书
激励口号大全
2014/06/17 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL