Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
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
IOError
these days ?). For example, some discussion here -
Python's "open()" throws different errors for "file not found" - how to handle both exceptions?
. But, I think, that is not the right way. After all, a
FileExistsError
exists specifically to avoid having to worry about
errno
.
The following attempt didn't work as I get an error for the token
FileExistsError
.
os.mkdir(folderPath)
except FileExistsError:
print 'Directory not created.'
How do you check for this and similar other errors specifically ?
–
According to the code
print ...
, it seems like you're using Python 2.x.
FileExistsError
was added in Python 3.3; You can't use
FileExistsError
.
Use
errno.EEXIST
:
import os
import errno
os.mkdir(folderPath)
except OSError as e:
if e.errno == errno.EEXIST:
print('Directory not created.')
else:
raise
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()
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)
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.