2012-11-18 36 views
2

文件我已經寫了一些代碼,BZ2,壓縮與BZ2壓縮對象的文件:無法打開BZ2壓縮(與Python)與正常歸檔管理

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() 

我沒有得到一個錯誤和文件被創建,但是當我想用存檔管理器打開它時,我得到一個非特定的錯誤。我找不到我的錯誤,並且此模塊記錄不完整。

+0

你得到什麼錯誤? – georg

+0

「提取文件時發生錯誤。」 – Eknoes

+0

您是否確實安裝了bzip?它是否從命令行工作? – georg

回答

5

當您使用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() 
+0

不幸的是,得到'ValueError:這個對象已經被刷新了' – Eknoes

+0

對不起,改變了我的答案。應該現在工作。 – mata

+0

是的,這是完美的,非常感謝你! – Eknoes