Search code examples
pythonzip

To unzip a file


I want to unzip a file of type *.sec.gz which is a zipfile. But i'm getting badfile. Can someone guide me to resolve this?

import zipfile
def unzip(path):
    zfile = zipfile.ZipFile(path)
    for name in zfile.namelist():
        (dirname, filename) = os.path.split(name)
        if filename == '':
            # directory
            if not os.path.exists(dirname):
                os.mkdir(dirname)
        else:
            # file
            fd = open(name, 'w')
            fd.write(zfile.read(name))
            fd.close()
    zfile.close()

k=unzip('C://test//08October2014//DATA_INTV_NEW//Oct0814//1.sec.gz')

Output:

BadZipfile                                Traceback (most recent call last)
<ipython-input-7-5134b63e752e> in <module>()
     27     zfile.close()
     28 
---> 29 k=unzip('C://test//08October2014//DATA_INTV_NEW//Oct0814//1.sec.gz')

<ipython-input-7-5134b63e752e> in unzip(path)
     13 
     14 def unzip(path):
---> 15     zfile = zipfile.ZipFile(path)
     16     for name in zfile.namelist():
     17         (dirname, filename) = os.path.split(name)

C:\Python27\Lib\zipfile.pyc in __init__(self, file, mode, compression, allowZip64)
    768         try:
    769             if key == 'r':
--> 770                 self._RealGetContents()
    771             elif key == 'w':
    772                 # set the modified flag so central directory gets written

C:\Python27\Lib\zipfile.pyc in _RealGetContents(self)
    809             raise BadZipfile("File is not a zip file")
    810         if not endrec:
--> 811             raise BadZipfile, "File is not a zip file"
    812         if self.debug > 1:
    813             print endrec

BadZipfile: File is not a zip file

Solution

  • The error message is completely accurate: that is not a zip file. It is a gzip file, which is something completely different. You should use the gzip module.