Python 合并"大"文件
在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']
因此,一个大的文件会占用相当多的内存。你可能更适合构建一个小过滤器。