zipfile extracting png files corrupt
Dave Angel
davea at ieee.org
Sat Oct 17 07:24:46 EDT 2009
marks542004 at yahoo.com wrote:
> Hi, I am using the zipfile in Python 2.4 to extract files from
> existing zips.
> It appears to work but the files extracted are corrupt.
>
Have you done any analysis to see in what sense they are corrupt? For
example, do text files work, but not binary ones? If the file fragment
is small, are you getting a zero-length file out? Is the filesize
always wrong?
> Here is my code :
>
> import zipfile
> import os, sys , shutil
>
> epath = "c:/ziptest/"
> fil = "J:/archives/xzips/duplicates/gothicfence_1470.zip"
> ferr = file((epath + "/errlog.txt"),"w")
> print "Extracting to ",epath
> try:
> if zipfile.is_zipfile(fil):
> z = zipfile.ZipFile(fil,"r")
> nmes = z.namelist()
> for i in nmes:
> fn = os.path.split(i)[1]
> print "...",fn
> dta = z.read(i)
>
You read the data here, but don't use it. So the subsequent read below
presumably misses this first part of the data.
> if len(dta) >0 :
> enam = epath + fn
> fo = file(enam,"wb")
> fo.write(z.read(i))
> fo.flush()
> fo.close()
> except:
> myerr = fil +"," + str(sys.exc_info()[1]) +"\n"
> ferr.write(myerr)
> ferr.close()
>
> any ideas ? thanks
>
>
In addition, I don't know if Zipfile.read() might return only a portion
of the file. If so, you'll need to make a loop instead of a simple if
in that final fragment.
More information about the Python-list
mailing list