2013-08-28 310 views
-2

我想解壓縮包含Beta目錄的Alpha.zip文件夾,該文件夾包含一個包含a.Z,b.Z,c.Z,d.Z文件的Gamma文件夾。使用zip和7-zip,我能夠提取存儲在.Z文件中的所有a.D,b.D,c.D,d.D文件。Python:將zip文件解壓縮並解壓縮.zip

我在使用Import gzip和Import zlib的python中試過這個。

import sys 
import os 
import getopt 
import gzip 
f = open('a.d.Z','r') 
file_content = f.read() 
f.close() 

我不斷收到各種錯誤包括:這是不是一個zip文件,返回codecs.charmap_encode(輸入self.errors encoding_map)0任何建議,如何編寫代碼呢?

回答

2

您需要實際使用某種類型的zip庫。現在你正在導入gzip,但你沒有做任何事情。試着看看gzip documentation並使用該庫打開文件。

gzip_file = gzip.open('a.d.Z') # use gzip.open instead of builtin open function 
file_content = gzip_file.read() 

根據您的評論進行編輯:您不能僅僅使用任何壓縮庫打開各種壓縮文件。由於你有一個.Z文件,很可能你想要使用zlib而不是gzip,但是由於擴展名只是慣例,所以只有你確切知道你的文件的壓縮格式。要使用zlib,請改爲使用

# Note: untested code ahead! 
import zlib 
with open('a.d.Z', 'rb') as f: # Notice that I open this in binary mode 
    file_content = f.read() # Read the compressed binary data 
    decompressed_content = zlib.decompress(file_content) # Decompress 
+0

#!的/ usr/bin中/ python33 進口SYS 進口OS 進口getopt的 進口的gzip F = gzip.open( 'ADZ') f_content = f.read() 錯誤我一直得到是 f_content = f.read() 文件「C:\ Python33 \ lib \ gzip.py」,行360,在讀self._read(讀取) 文件「C:\ Python33 \ lib \ gzip.py」,行441,在_read self。 _read_gzip_header() 文件 「C:\ Python33 \ LIB \ gzip.py」,線路290,在_read_gzip_header 提高IO錯誤( '不是一個壓縮文件') OSERROR:不是gzip壓縮的文件 –

+0

@DDS這看起來像一個非常直接的錯誤信息...您嘗試打開的文件不是gzip文件。你知道用什麼協議來壓縮它嗎? 'gzip'只適用於gzip文件。由於擴展名是'.Z',因此您可能需要使用['zlib'](http://docs.python.org/2/library/zlib.html)。你必須爲你的特定文件使用正確的解壓縮庫。 –