I have a zip file which contains the following directory structure:
dir1\\dir2\\dir3a
dir1\\dir2\\dir3b
I\'m trying to unzip it and maintai
Note that zip files can have entries for directories as well as files. When creating archives with the zip
command, pass the -D
option to disable adding directory entries explicitly to the archive. When Python 2.6's ZipFile.extractall
method runs across a directory entry, it seems to create a file in its place. Since archive entries aren't necessarily in order, this causes ZipFile.extractall
to fail quite often, as it tries to create a file in a subdirectory of a file. If you've got an archive that you want to use with the Python module, simply extract it and re-zip it with the -D
option. Here's a little snippet I've been using for a while to do exactly that:
P=`pwd` &&
Z=`mktemp -d -t zip` &&
pushd $Z &&
unzip $P/.zip &&
zip -r -D $P/.zip . &&
popd &&
rm -rf $Z
Replace
and
with real filenames relative to the current directory. Then just copy the whole thing and paste it into a command shell, and it will create a new archive that's ready to rock with Python 2.6. There is a zip
command that will remove these directory entries without unzipping but IIRC it behaved oddly in different shell environments or zip configurations.