我已经编写了一些代码到bz2使用bz2 Compressor对象压缩文件:

def compressFile(file_name, new_name):
    comp = bz2.BZ2Compressor()
    comFile = open(new_name, "wb")
    oldFile = open(file_name, "rb")
    while True:
        data = oldFile.read(1024*1024)
        if(len(data) == 0):
            break
        compressed = comp.compress(data)
        comFile.write(compressed)
    comp.flush()
    comFile.close()

我没有得到一个错误,文件被创建,但当我想打开它与档案管理器,我得到一个非特定的错误。我找不到我的错误,而且这个模块的文档记录很差。

最佳答案

当您使用BZ2Compressor时,当您调用compress()时,您将获得数据块,并且很有可能只有当您调用flush()时才能获得数据。
如果你这样改变你的功能,它应该会起作用:

def compressFile(file_name, new_name):
    comp = bz2.BZ2Compressor()
    comFile = open(new_name, "wb")
    oldFile = open(file_name, "rb")
    while True:
        data = oldFile.read(1024*1024)
        if(len(data) == 0):
            break
        comFile.write(comp.compress(data))
    comFile.write(comp.flush())
    comFile.close()

关于python - 无法使用常规存档管理器打开bz2压缩的文件(使用python),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13444864/

10-13 23:50