Python小例子 - 怎样纵向合并txt文件?

蚂蚁学Python

共 1002字,需浏览 3分钟

 ·

2021-04-20 20:11

需求很简单,怎样把多个格式相同的文件,合并成同一个?


文件列表形如:



txt文件可能有很多个,所以可以借助os.list做批量扫描。


对这个问题,有现成的很多系统命令可以搞定


比如Linux的Shell命令:

cat *.txt > all.txt


用Python代码该怎么实现呢?


## 步骤1:把每个文件的内容,读取到一个List列表里面


import os
data_dir = "./datas/many_texts"
contents = []for file in os.listdir(data_dir): file_path = f"{data_dir}/{file}" if os.path.isfile(file_path) and file.endswith(".txt"): with open(file_path) as fin: contents.append(fin.read())


其中用到了 fin.read() 这个方法可以把文件的全部内容读取到一个字符串。



## 步骤2:把列表输出到结果文件


final_content = "\n".join(contents)
with open("./datas/many_texts.txt", "w") as fout: fout.write(final_content)


用Python处理的好处,是可以随意添加一些特殊的逻辑,比如过滤掉掉有问题的文件和数据。


结果样子:


## 上面方法的缺点


上面的实现方法很直观,把所有的文件字符串统一放到List中,然后合并内容后输出。


但是如果文件内容特别大,几百MB还可以,如果超过了好多个GB,那么这个代码会先把所有数据读取到内存然后合并,对电脑的资源占用就会非常大了。


这个时候,就不能做中间存储,方法可以是读取一个文件就写出到一个结果文件,甚至改成按行读写即读取一行就写出到目标文件一行。


不过,大部分情况下,不会处理那么大的文件,用这个List方法足够可以了。


## 视频讲解



我是蚂蚁,谢谢关注。

浏览 81
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报