Ryan Wilson added the comment: The reason behind this was that zipfile.py currently handles empty directories in zipfiles incorrectly.
On lines 1774 - 1778 in Lib/zipfile.py: tgtdir = os.path.dirname(tgt) if not os.path.exists(tgtdir): os.makedirs(tgtdir) with open(tgt, 'wb') as fp: fp.write(zf.read(path)) In the case described above, tgt is 'dest/foo/' because the directory is empty. For non-empty directories, tgt would be a file in the directory i.e. 'dest/foo/a'. In the empty directory case, the directory will be created, but then opened as file (which will throw the error shown above). When compressing the file with 'python -mzipfile -c', zipfile.py would not add empty directories to the zipfile. Hence, the zip file generated is empty. This patch fixes both issues. In the decompression case, I utilize the Zipfile.extractall() function instead of extracting each file manually. The extractall() function handles empty directories correctly. For the compression case, I added a check to add an empty directory to the zip file. ---------- keywords: +patch nosy: +ryantimwilson versions: -Python 3.5 Added file: http://bugs.python.org/file36389/fix_zipfile_empty_dir.patch _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22201> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com