About zipfile on WinXP

Kent Johnson kent at kentsjohnson.com
Mon Jan 2 18:48:41 EST 2006


rzed wrote:
> I create a zip file on my WinXP system, using this function:
> 
> <fn>
> import zipfile
> import os
> import os.path
> 
> def zipdir(dirname, zfname):
>     zf = zipfile.ZipFile(zfname, 'w', zipfile.ZIP_DEFLATED)
>     for root, dirs, files in os.walk(dirname):
>         for f in files:
>             fullname = os.path.join(root, f)
>             zf.write(fullname)
>     zf.close()
> </fn>
> 
> The file is created, and, again using zipfile, I can read it and 
> extract from it and so on. 
> 
> Has anyone else observed this? If not, is there something in the 
> code that I should change to permit XP to view the contents? 

A couple of guesses:

- If dirname is an absolute path then you are including the drive 
specifier in the path in the zip file. If dirname is a relative path 
with elements like '.' or '..' then you are including them in the zip. 
Try something like
   fullname = os.path.join(root, f)[len(dirname):]
to get relative paths in the zip

- WinZip puts empty entries for directories in the zip. Maybe WinXP 
requires these.

Kent



More information about the Python-list mailing list