diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-09-07 06:49:42 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-09-07 06:49:42 (GMT) |
commit | c98b26a6ac0e5e68dd2eb820430cc2a44b4df019 (patch) | |
tree | 0ddea857df78ff453787e72ca58be6a88e938293 /Lib/glob.py | |
parent | 1de1a6a2dc5338aed81dd98fe4b5edaddfac6a2d (diff) | |
download | cpython-c98b26a6ac0e5e68dd2eb820430cc2a44b4df019.zip cpython-c98b26a6ac0e5e68dd2eb820430cc2a44b4df019.tar.gz cpython-c98b26a6ac0e5e68dd2eb820430cc2a44b4df019.tar.bz2 |
Issue #25596: Falls back to listdir in glob for bytes paths on Windows.
Diffstat (limited to 'Lib/glob.py')
-rw-r--r-- | Lib/glob.py | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/Lib/glob.py b/Lib/glob.py index 002cd92..7c3cccb 100644 --- a/Lib/glob.py +++ b/Lib/glob.py @@ -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 |