What does the new open file mode "x" do in python 3?
here is the doc of python 3:
'r': open for reading (default)
'w': open for writing, truncating the file first
'x': open for exclusive creation, failing if the file already exists
'a': open for writing, appending to the end of the file if it exists
'b': binary mode
't': text mode (default)
'+': open a disk file for updating (reading and writing)
'U': universal newlines mode (deprecated)
What does "exclusive creation" mean?
I test the "x" mode and find some:
open
open
So, "x" is similar to "w". But for "x", if the file exists, raise FileExistsError. For "w", it will simply create a new file / truncate the existed file.
Am I right? Is this the only difference?
In the x mode, the file is only writeable, but in x+ mode, the file is opened as both readable and writeable. This mode is significant and comes in handy when we don't want to accidentally truncate an already existing file with the a or w modes. The x mode can be used in the open() function in the following way.
So, "x" is similar to "w". But for "x", if the file exists, raise FileExistsError. For "w", it will simply create a new file / truncate the existed file.
Python open() function returns the file object which can be used to read, write, and modify the file. If a file is not found, then it raises the FileNotFoundError exception.
As @Martjin has already said, you have already answered your own question. I would only be amplifying on the explanation in the manual so as to get a better understanding of the text
'x': open for exclusive creation, failing if the file already exists
When you specify exclusive creation
, it clearly means, you would use this mode for exclusively creating the file. The need for this is required when you won't accidentally truncate/append an existing file with either of the modes w
or a
.
In absence of this, developers should be cautious to check for the existence of the file before leaping to open the file for updation.
With this mode, your code would be simply be written as
try: with open("fname", "x") as fout: #Work with your open file except FileExistsError: # Your error handling goes here
Previously though your code might had been written as
import os.path if os.path.isfile(fname): # Your error handling goes here else: with open("fname", "w") as fout: # Work with your open file
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With