上一篇文章中,我们开发了一套一键自动化采集大众点评评论信息的脚本。采集的评论信息以Excel格式存储在一个文件夹下。
为了方便以后对Excel文件的管理,还有对于采集到的数据的规整,比如说,现在采集到的数据每一页评论数据保存在一个新的Excel中,每页数据有15条,看起来很不方便,正常的需求就是将所有的数据放在一张Excel表格中。
那么,我们这篇要讲解的脚本就必须有两个功能:
1. 可以将多个Excel文件合并的脚本;
2. 可以一键删除所有Excel表格的脚本。(删除文件,也是懒得不想动的)
一、合并多个Excel表格
合并Excel表格思路一种是:读取第一个Excel表格的内容,追加到第二个Excel表格,然后读取第二个Excel表格的数据,存入第三个Excel表格……以此类推。
这个思路的流程是对的,不过太Low了,也就是简单实现了功能,而且对同一个Excel表格读取了两次,耗时最多,效率最慢。
第二种思路是:从第二个Excel表格开始,读取Excel表格内容,追加到第一个Excel表格中。我们获取到文件夹下所有的文件路径,然后切片获取从第二个Excel表格文件开始的文件列表。每个Excel表格只读取一次(除了第一个Excel表格保持打开状态)。同时保持数据顺序正确,也没有多余操作。效率跟功能基本算是优解了。
So,就确定是第二种思路了。
(其实,我自己写好的脚本思路是,先创建一个新的Excel表格,然后逐一读取所有Excel表格,追加到新的Excel表格中。这样的好处是,合并后的Excel表格一目了然,而且每个Excel表格也是只读取一次。缺点就是创建新表格需要指定columns,采集的数据字段改变,需要手动修改代码。写博客过程中,发现还是第二种思路更简洁,没有多余操作,以后字段变化,也不用再修改源码,简单修改了下脚本,按第二种思路实现)
具体实现如下:
def merge_excel(self, excel_path):
"""
合并excel
:return:
"""
# 合并excel
df = pd.read_excel(excel_path, header=None)
df_merged = pd.read_excel(self.merged_excel_path, header=None)
dd = df_merged.append(df[1:], ignore_index=True)
dd.to_excel(self.merged_excel_path, index=False, header=None)
excel_path就是当前读取的Excel表格文件路径,merged_excel_path是最终保存的Excel表格文件路径,第二种思路的话就是当前文件夹下的第一个Excel表格文件路径。
二、删除文件夹下所有文件
删除文件夹下的所有文件,思路首先是获取文件夹下的所有文件路径,然后判断是否是文件夹,非文件夹的就是单个文件了,使用os.remove()函数直接删除掉文件即可。
具体实现如下:
def del_file(path):
ls = os.listdir(path)
for i in ls:
c_path = os.path.join(path, i)
print(c_path)
if os.path.isdir(c_path): # 如果是文件夹那么递归调用一下
del_file(c_path)
else: # 如果是一个文件那么直接删除
os.remove(c_path)
print('文件已经清空完成')
总结。
一键合并Excel表格脚本,一键删除文件夹下所有文件脚本,重要的核心都是对于OS库的使用,关于文件路径的识别,os库有奇效,并且还是python自带的,执行效率杠杠。
这两个脚本实现的初心,是配合大众点评脚本,提高用户体验(也就是一个字懒)。能让电脑做的事情,坚决不手动,这是作为一枚程序搬砖工的底线。