我必须为现有的,但非常大(2到10 GB范围)的文本文件准备一些任意文本。由于文件太大,我尽量避免将整个文件读入内存。但我是不是对逐行迭代太保守了?使用readlines(sizehint)方法是否会比当前的方法有更大的性能优势?
最后的删除和移动不太理想,但据我所知,没有办法对线性数据进行这种操作。但是我对Python不是很精通——也许有一些Python特有的东西我可以利用它来做得更好?
import os
import shutil
def prependToFile(f, text):
f_temp = generateTempFileName(f)
inFile = open(f, 'r')
outFile = open(f_temp, 'w')
outFile.write('# START\n')
outFile.write('%s\n' % str(text))
outFile.write('# END\n\n')
for line in inFile:
outFile.write(line)
inFile.close()
outFile.close()
os.remove(f)
shutil.move(f_temp, f)
最佳答案
你要做的是读取文件的大(从64k到数MB)块和写出来的块。换句话说,不要使用单独的行,而是使用大的块。这样做可以减少I/O,希望您的进程是I/O绑定的,而不是CPU绑定的。
关于python - 在Python中将文本有效地放在很大的文本文件之前,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4965111/