Issue #6050: Don't fail extracting a directory from a zipfile if
the directory already exists.
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index fcb55d1..cb8ba10 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -1023,6 +1023,11 @@
         self.assertTrue(os.path.isdir(os.path.join(TESTFN2, "a", "b")))
         self.assertTrue(os.path.exists(os.path.join(TESTFN2, "a", "b", "c")))
 
+    def test_bug_6050(self):
+        # Extraction should succeed if directories already exist
+        os.mkdir(os.path.join(TESTFN2, "a"))
+        self.testExtractDir()
+
     def testStoreDir(self):
         os.mkdir(os.path.join(TESTFN2, "x"))
         zipf = zipfile.ZipFile(TESTFN, "w")
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index e3d40b4..68885f9 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -971,7 +971,8 @@
             os.makedirs(upperdirs)
 
         if member.filename[-1] == '/':
-            os.mkdir(targetpath)
+            if not os.path.isdir(targetpath):
+                os.mkdir(targetpath)
             return targetpath
 
         source = self.open(member, pwd=pwd)