补充篇:盘点六种使用 Python 批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据

开发 前端
本文从实际工作出发,基于Python编程,介绍了6种方法,实现批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,为大家减少了很多复制粘贴的麻烦,省时省力,还不容易出错。

[[435874]]

一、前言

大家好,我是Python进阶者。前一阵子给大家分享了Python自动化文章:手把手教你利用Python轻松拆分Excel为多个CSV文件,手把手教你4种方法用Python批量实现多Excel多Sheet合并,而后在Python进阶交流群里边有个叫【扮猫】的粉丝遇到一个问题,她有很多个Excel表格,而且多个excel里多个sheet表,现在需要对这些Excel文件进行合并。

用上面链接对应的方法进行合并,发现只能够合并Sheet,其他的就合并不了,这确实是个问题。

诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一起来看看吧!

二、说明

前天本来针对这个问题,已经发布了一篇文章,盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,里边盘点了4个方法,测试之后完全可行,这篇文章十分的受欢迎,评论和点赞真不错。

今天这里继续补充两个方法,高手在民间,感谢【??(这是月亮的背面)】和【韩峰】两位大佬提供的思路和代码。

三、项目实现

之前提供4种方法,在这里就不再赘述了,大家可以戳这篇文章自行获取学习,源码都在文章中了,盘点4种使用Python批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据。这里给大家介绍另外两种方法,一起来看看吧!

1、方法五

这个方法是来自【韩峰】大佬的分享,代码如下。

  1. # -*- coding: utf-8 -*- 
  2. import pandas as pd 
  3. import os 
  4.  
  5. path = r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777' 
  6. file_list = [] 
  7. for root, dirs, filename in os.walk(path): 
  8.     for file in filename: 
  9.         file_list.append(path + '\\' + file) 
  10.  
  11. # The_All_data = pd.DataFrame() 
  12. All_data = pd.DataFrame() 
  13.  
  14. for Prowler in file_list: 
  15.     ereader = pd.ExcelFile(Prowler)    # 读到文件名称 
  16.     one_sheet_name = ereader.sheet_names   # 读到文件中所有sheet的名字 
  17.     for Sheet_Prowler in one_sheet_name: 
  18.         All_sheet_data = pd.read_excel(ereader, sheet_name=Sheet_Prowler)     # 读取文件名称中所有sheet的数据 
  19.         temp = pd.concat([All_data, All_sheet_data]) 
  20.         All_data = pd.DataFrame(temp
  21.     # Montage = pd.concat([The_All_data, All_sheet_data])    # 拼接表格:将一个一个表格中所有sheet的数据放到汇总表之中 
  22.     # The_All_data = pd.DataFrame(Montage)                  # 将添加了新的数据的表格赋值给总表,下一次就会接到这个表的最后面。 
  23.  
  24. print(All_data) 
  25.  
  26. All_data.to_csv(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\777\The_All_data.csv'

上面这个代码是可以跑起来了,功能上实现没有问题,其实逻辑和之前的方法是一致的,就是变量命名方面看着有些让人不太舒服。

2、方法六

这个方法是来自【??(这是月亮的背面)】大佬的分享,代码如下。

  1. # -*- coding: utf-8 -*- 
  2. from pathlib import Path 
  3. import pandas as pd 
  4.  
  5. path = Path(r'E:\PythonCrawler\python_crawler-master\MergeExcelSheet\file\888'
  6. pd.concat([pd.concat(pd.read_excel(i, sheet_name=None)) for i in path.glob("[!~]*.xls*")], 
  7.           ignore_index=True).to_excel("result.xlsx"index=False
  8.  
  9. print('合并完成!'

如果没有前面几个方面的铺垫,上来直接看这个代码,相信大部分都直接晕乎了,我这里给他稍微拆分了下,方便大家理解,实际上确实是一行代码,可以在上面的聊天截图中看到,着实精辟!

关于效果展示方面,这里就不贴图了,亲测好使。

说到这里,又想多唠叨两句,有时候看别人的代码,确实可以跑,自己拿过来,不一定能跑,就很迷,下图是【冫马讠成】大佬自己测试的时候遇到的问题,其实就是少模块,安装xlrd之后,就可以运行正常了。

四、总结

本文从实际工作出发,基于Python编程,介绍了6种方法,实现批量合并同一文件夹内所有子文件夹下的Excel文件内所有Sheet数据,为大家减少了很多复制粘贴的麻烦,省时省力,还不容易出错。代码不多,循环追加有点绕,想想也就明白了,不懂的随时留言提问,大家一起学习进步。 

有想法的小伙伴还可以将文章中的代码进行打包,做成一个exe可执行的小软件,包装好发给别人使用,也可以赚点小费噢,关于打包的教程这里不再赘述,欢迎前往:三个你必须要记住的Pyinstaller打包命令——利用Python实现打包exe。

 

责任编辑:武晓燕 来源: Python爬虫与数据挖掘
相关推荐

2021-11-17 09:01:23

Python批量合并Python基础

2023-03-28 15:19:37

文件列表scandir函数

2022-01-27 09:24:20

PythonExcelPython基础

2015-08-07 10:02:34

Java线程池递归

2016-12-07 09:30:00

Power QueryExcel文件

2020-09-23 08:53:48

父文件夹模块Python

2010-03-25 10:24:32

Python代码

2024-06-19 10:43:44

2011-08-09 18:20:52

windows7文件夹

2021-02-18 22:07:08

Python项目文件

2020-05-09 16:25:31

Ubuntu文件夹桌面

2016-10-13 08:55:20

Windows 10PowerShelll批量

2009-12-03 10:18:32

Linux文件夹执行权限

2010-12-31 13:35:25

文件夹重定向

2009-08-12 17:12:51

C#读取文件夹

2011-08-04 15:36:32

文件夹病毒

2009-11-25 09:21:53

Windows 7导航

2022-11-10 08:15:55

PSCPWindowsLinux

2017-11-02 14:19:32

卷影拷贝VSS恢复文件

2022-11-28 11:37:55

点赞
收藏

51CTO技术栈公众号