Use os.open()
with os.O_CREAT
and os.O_EXCL
to create the file. That will fail if the file already exists:
>>> fd = os.open("x", os.O_WRONLY | os.O_CREAT | os.O_EXCL)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 17] File exists: 'x'
Once you’ve created a new file, use os.fdopen()
to turn the handle into a standard Python file object:
>>> fd = os.open("y", os.O_WRONLY | os.O_CREAT | os.O_EXCL)
>>> f = os.fdopen(fd, "w") # f is now a standard Python file object
Edit: From Python 3.3, the builtin open()
has an x
mode that means “open for exclusive creation, failing if the file already exists”.