]> granicus.if.org Git - python/commitdiff
Issue #22219: The zipfile module CLI now adds entries for directories
authorSerhiy Storchaka <storchaka@gmail.com>
Sat, 4 Oct 2014 10:39:18 +0000 (13:39 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Sat, 4 Oct 2014 10:39:18 +0000 (13:39 +0300)
(including empty directories) in ZIP file.

Lib/zipfile.py
Misc/NEWS

index ecdd8a55069d48dd57b35e9eca70e89817c29521..b77e6c88e465db74138edc9f689052ccdae7a438 100644 (file)
@@ -1519,14 +1519,21 @@ def main(args = None):
             if os.path.isfile(path):
                 zf.write(path, zippath, ZIP_DEFLATED)
             elif os.path.isdir(path):
+                if zippath:
+                    zf.write(path, zippath)
                 for nm in os.listdir(path):
                     addToZip(zf,
                             os.path.join(path, nm), os.path.join(zippath, nm))
             # else: ignore
 
         with ZipFile(args[1], 'w', allowZip64=True) as zf:
-            for src in args[2:]:
-                addToZip(zf, src, os.path.basename(src))
+            for path in args[2:]:
+                zippath = os.path.basename(path)
+                if not zippath:
+                    zippath = os.path.basename(os.path.dirname(path))
+                if zippath in ('', os.curdir, os.pardir):
+                    zippath = ''
+                addToZip(zf, path, zippath)
 
 if __name__ == "__main__":
     main()
index 17e3f8affa5c6118921d4898fbc85bd4aaef118f..0a97051afc7903104acb5037fd17cb095da6aea8 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -31,6 +31,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #22219: The zipfile module CLI now adds entries for directories
+  (including empty directories) in ZIP file.
+
 - Issue #22449: In the ssl.SSLContext.load_default_certs, consult the
   enviromental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.