]> granicus.if.org Git - python/commitdiff
Issue #25596: Falls back to listdir in glob for bytes paths on Windows.
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 7 Sep 2016 06:49:42 +0000 (09:49 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Wed, 7 Sep 2016 06:49:42 +0000 (09:49 +0300)
Lib/glob.py

index 002cd920190da76adb907aa6bad8763951a55eb7..7c3cccb74053bc53d27bf2364d6f973fc9581ec1 100644 (file)
@@ -118,13 +118,22 @@ def _iterdir(dirname, dironly):
         else:
             dirname = os.curdir
     try:
-        with os.scandir(dirname) as it:
-            for entry in it:
-                try:
-                    if not dironly or entry.is_dir():
-                        yield entry.name
-                except OSError:
-                    pass
+        if os.name == 'nt' and isinstance(dirname, bytes):
+            names = os.listdir(dirname)
+            if dironly:
+                for name in names:
+                    if os.path.isdir(os.path.join(dirname, name)):
+                        yield name
+            else:
+                yield from names
+        else:
+            with os.scandir(dirname) as it:
+                for entry in it:
+                    try:
+                        if not dironly or entry.is_dir():
+                            yield entry.name
+                    except OSError:
+                        pass
     except OSError:
         return