summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2014-08-17 12:14:48 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2014-08-17 12:14:48 (GMT)
commit97f17ff8405e1b6741ff1b1412befd0190896ae7 (patch)
treedec9d80a48933186a069dbe8db5abd1779a2bcc2
parenta64ce5d7446f226805ff27d99dcecbc8681733d8 (diff)
downloadcpython-97f17ff8405e1b6741ff1b1412befd0190896ae7.zip
cpython-97f17ff8405e1b6741ff1b1412befd0190896ae7.tar.gz
cpython-97f17ff8405e1b6741ff1b1412befd0190896ae7.tar.bz2
Issue #22201: Command-line interface of the zipfile module now correctly
extracts ZIP files with directory entries. Patch by Ryan Wilson.
-rw-r--r--Lib/zipfile.py13
-rw-r--r--Misc/NEWS3
2 files changed, 4 insertions, 12 deletions
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index ee228b1..c577657 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -1764,18 +1764,7 @@ def main(args = None):
sys.exit(1)
with ZipFile(args[1], 'r') as zf:
- out = args[2]
- for path in zf.namelist():
- if path.startswith('./'):
- tgt = os.path.join(out, path[2:])
- else:
- tgt = os.path.join(out, path)
-
- 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))
+ zf.extractall(args[2])
elif args[0] == '-c':
if len(args) < 3:
diff --git a/Misc/NEWS b/Misc/NEWS
index 71304b3..15f2b82 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -329,6 +329,9 @@ Windows
Tools/Demos
-----------
+- Issue #22201: Command-line interface of the zipfile module now correctly
+ extracts ZIP files with directory entries. Patch by Ryan Wilson.
+
- Issue #21906: Make Tools/scripts/md5sum.py work in Python 3.
Patch by Zachary Ware.