【发布时间】:2021-11-24 07:28:15
【问题描述】:
我正在将多个文本文件合并到一个文本文档中。我能够读取所有文件名并创建一个新的输出文档。
但是,当我输出文档时,我只从一个文件中获取数据,而不是从其他文件中获取数据?总体而言,它应该接近 100 万行 txt,但只获得前 10k
import os
projpath1 = 'PATH1'
projpath2 = 'PATH2'
for root, dirs, files in os.walk(f"{projpath1}", topdown=False):
for name in files:
if not name.startswith('.DS_Store'):
split = name.split("/")
title = split[0]
filename = (os.path.join(root, name))
inputf = os.path.expanduser(f'{projpath1}/{title}')
updatedf = os.path.expanduser(f'{projpath2}/ENC_merged.txt')
with open(inputf, "r") as text_file, open(updatedf, 'w') as outfile:
for info in text_file:
for lines in info:
outfile.write(lines)
我真的被卡住了,无法弄清楚:/
【问题讨论】:
-
每次
open(updatedf, 'w')都会覆盖现有文件的内容。您应该改为在a“附加”模式下打开它。见罚款documentation。 -
如果您打算每次都像那样打开文件而不是在循环外打开一次,请查看使用“a”选项打开stackoverflow.com/questions/1466000/…。还要考虑二进制模式,因为将字节视为字节比将 ascii 转换为宽字符并返回要快。
-
@martineau 就是这样......如此简单,我完全忽略了!非常感谢:)
标签: python loops input merge output