我必须为现有的,但非常大(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/

10-12 17:25