0
点赞
收藏
分享

微信扫一扫

Python批量合并TXT文件


本节给大家讲如何批量的合并TXT文件,先讲讲TXT文件的概念,TXT文件是微软在操作系统上附带的一种文本格式,是最常见的一种文件格式 ,主要存文本信息,TXT文件格式具有体积小、存储简单方便;格式比较简单,不会中毒,且是电脑和很多移动设备的通用格式的特点,所以在日常中使用TXT文件格式的数据比较多。

在本节的案例中,一共存在四个文件夹内容,包含四种不同类型的电影,其中,(D)电影类型:动作电影、(Q)电影类型:奇幻电影、(W) 电影类型:战争电影、(X)电影类型:喜剧电影

Python批量合并TXT文件_数据

数据表格的字段包括电影名称、上映时间、发行公司、电影导演、电影主演、累计票房(万),数据表格如下所示。

Python批量合并TXT文件_txt文件_02

Python批量合并TXT文件_desktop_03

数据获取

公众号后台回复

文本文件

获取本文的数据文件

本节的案例需要使用os、pandas、datetime三个库,要将多个TXT文件汇总,我们的分析思路如下。

先将文件夹的每一个TXT文件目录遍历出来。


importpath=r'C:\Users\尚天强\Desktop\中国电影'pathlist=os.listdir(path)
print(pathlist)



['(D)电影类型.txt', '(Q)电影类型.txt', '(W)电影类型.txt', '(X)电影类型.txt']



打印今天的日期给合并的文件命名。


import datetimetoday=str(datetime.date.today())day=today.replace("-","")
print(day)


20210912


新建一个空的数据框,列名命名为'电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)'。


import pandas asmerge_data=pd.DataFrame(columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)'])
print(merge_data)

Python批量合并TXT文件_desktop_04

循环遍历每一个TXT文件夹的表头和数据行。


for file_name in pathlist:    rawdata=open(r'C:\Users\尚天强\Desktop\中国电影'+'\\'+file_name,'r',encoding='utf-8')    line=rawdata.readline()     lines=rawdata.readlines()     print(line)     print(lines)

Python批量合并TXT文件_txt文件_05

将遍历的数据统一导入到一个数据框中,数据框的列名叫"中国电影数据"。


data_lines=pd.DataFrame(lines)data_lines.columns=["中国电影数据"]
print(data_lines)

Python批量合并TXT文件_数据_06

将数据进行分列。


res=data_lines["中国电影数据"].str.split(',',expand=True)
res.head()

Python批量合并TXT文件_txt文件_07

分列的数据结果重命名。



res=res.iloc[:,[0,1,2,3,4,5]]res.columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)']
res.head()

Python批量合并TXT文件_数据_08

根据数据文件表头的字母对电影类型进行打标,比如这里的(X)它对应的电影类型是"喜剧电影"。



type=file_name[0:3]print(type)Dict = {"(D)":"动作电影","(Q)":"奇幻电影","(W)":"战争电影","(X)":"喜剧电影"}res['电影类型'] =typeres['电影类型']=Dict[type]
print(res['电影类型'])

Python批量合并TXT文件_desktop_09

将数据合并的结果全部填充到之前建的merge_data这个空的数据框中,同时添加一列处理日期列,并做去重处理。




result=merge_data.append(res,sort=False) #sort=False合并数据时,避免顺序出错result["处理日期"]=daymerge_data=result.drop_duplicates()
merge_data.head()

Python批量合并TXT文件_txt文件_10

至此四个TXT文件的合并结束,导出的结果如下所示。


merge_data.to_excel(r'C:\Users\尚天强\Desktop'+"\\"+"数据合并.xlsx",index=False)

Python批量合并TXT文件_desktop_11

此处的文本文件的合并,代码封装结果如下,使用时可以直接套用。

​​import os​​​​import pandas as pd​​​​import datetime​​​
​​​path=r'C:\Users\尚天强\Desktop\中国电影'​​​​pathlist=os.listdir(path)​​​
​​​today=str(datetime.date.today())​​​​day=today.replace("-","")​​​
​​​merge_data=pd.DataFrame(columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)'])​​​
​​​for file_name in pathlist:​​​​ rawdata=open(path+'\\'+file_name,'r',encoding='UTF-8')​​​​ line=rawdata.readline()​​​​ lines=rawdata.readlines()​​​​ data_lines=pd.DataFrame(lines)​​​​ data_lines.columns=["中国电影数据"]​​​
​​​ #数据分列​​​​ res=data_lines["中国电影数据"].str.split(',',expand=True)​​​​ res=res.iloc[:,[0,1,2,3,4,5]]​​​​ res.columns=['电影名称','上映时间','发行公司','电影导演','电影主演','累计票房(万)']​​​
​​​ #电影类型打标​​​​ type=file_name[0:3]​​​​ res['电影类型'] =type​​​​ Dict = {"(D)":"动作电影","(Q)":"奇幻电影","(W)":"战争电影","(X)":"喜剧电影"}​​​​ res['电影类型']=Dict[type]​​​​ result=merge_data.append(res,sort=False) #sort=False合并数据时,避免顺序出错​​​
​​​ #数据日期标注,数据去重​​​​ result["数据日期"]=day​​​​ merge_data=result.drop_duplicates()​​​​merge_data.to_excel(path+"\\"+"数据合并.xlsx",index=False)#数据导出​​


举报

相关推荐

0 条评论