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方法足够可以了。
## 视频讲解
我是蚂蚁,谢谢关注。
评论