I have come across examples in this forum where a specific error around files and directories is handled by testing the errno
value in OSError
(or
Here's an example of dealing with a race condition when trying to atomically overwrite an existing symlink:
# os.symlink requires that the target does NOT exist.
# Avoid race condition of file creation between mktemp and symlink:
while True:
temp_pathname = tempfile.mktemp()
try:
os.symlink(target, temp_pathname)
break # Success, exit loop
except FileExistsError:
time.sleep(0.001) # Prevent high load in pathological conditions
except:
raise
os.replace(temp_pathname, link_name)