summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/_bootstrap.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
-rw-r--r--Lib/importlib/_bootstrap.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 4161b3e..775fa85 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -85,10 +85,11 @@ def _write_atomic(path, data):
Be prepared to handle a FileExistsError if concurrent writing of the
temporary file is attempted."""
if not sys.platform.startswith('win'):
- # On POSIX-like platforms, renaming is atomic
- path_tmp = path + '.tmp'
+ # On POSIX-like platforms, renaming is atomic. id() is used to generate
+ # a pseudo-random filename.
+ path_tmp = '{}.{}'.format(path, id(path))
+ fd = _os.open(path_tmp, _os.O_EXCL | _os.O_CREAT | _os.O_WRONLY)
try:
- fd = _os.open(path_tmp, _os.O_EXCL | _os.O_CREAT | _os.O_WRONLY)
with _io.FileIO(fd, 'wb') as file:
file.write(data)
_os.rename(path_tmp, path)