Python 合并"大"文件

2 投票
2 回答
1217 浏览
提问于 2025-04-16 18:20

在Python中,我用file.readlines()把一个文件的内容读进了一个列表。之后,经过一些处理,我想把这些内容合并成一个字符串,使用fileString = ''.join(file)。但是,不知道为什么,即使没有使用print函数,程序也会把fileString的内容打印到控制台,打印到某个点就停了。接下来程序的其他部分就不执行了,这对我来说没什么用。

为什么join会这样呢?我该如何预先分配我想要的列表/字符串的内存,以避免它停止?或者有没有其他解决办法?

谢谢

2 个回答

1

你还需要考虑一下你打算怎么处理得到的字符串。如果你只是想把内容写回到一个文件里,其实不需要先把这些部分合并在一起,你可以直接用 file.writelines(strings) 来写入。

2

File 是你在内存中的文件指针。当你试图在它上面进行连接操作时,其实你并没有一个可以使用的字符串。

那这样怎么样呢?

with open(file, 'rb') as myfile:
    strings = myfile.readlines()

# do your stuff to strings
filestring = ''.join(strings)

请注意,strings 是一个像这样的行列表:

['我的行\n', '我的另一行!\n']

因此,一个大的文件会占用相当多的内存。你可能更适合构建一个小过滤器。

撰写回答