12

我想用 python 压缩大文本文件(我说的是 >20Gb 文件)。我不是任何专家,所以我试图收集我发现的信息,以下似乎有效:

import bz2

with open('bigInputfile.txt', 'rb') as input:
    with bz2.BZ2File('bigInputfile.txt.bz2', 'wb', compresslevel = 9) as output:
        while True:
            block = input.read(900000)
                if not block:
                    break
                output.write(block)

input.close()
output.close()

我想知道这种语法是否正确,是否有办法优化它?我的印象是我在这里遗漏了一些东西。

非常感谢。

4

2 回答 2

19

您的脚本似乎正确,但可以缩写:

from shutil import copyfileobj

with open('bigInputfile.txt', 'rb') as input:
    with bz2.BZ2File('bigInputfile.txt.bz2', 'wb', compresslevel=9) as output:
        copyfileobj(input, output)
于 2012-03-01T15:33:31.863 回答
0

你为什么要调用 .close() 方法?使用 with: 语句时不需要它们。

于 2012-03-01T15:19:48.597 回答