Issue #18849: Fixed a Windows-specific tempfile bug where collision with an
existing directory caused mkstemp and related APIs to fail instead of
retrying. Report and fix by Vlad Shcherbina.
diff --git a/Lib/tempfile.py b/Lib/tempfile.py
index 8a165ed..91332b6 100644
--- a/Lib/tempfile.py
+++ b/Lib/tempfile.py
@@ -219,6 +219,13 @@
return (fd, _os.path.abspath(file))
except FileExistsError:
continue # try again
+ except PermissionError:
+ # This exception is thrown when a directory with the chosen name
+ # already exists on windows.
+ if _os.name == 'nt':
+ continue
+ else:
+ raise
raise FileExistsError(_errno.EEXIST,
"No usable temporary file name found")