Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

does write mode create a new file if not existing?

Tags:

python

file-io

I'm trying to write to a file that does not already exist using a file context manager.

a=open ('C:/c.txt' , 'w')

The above does not succeed. How would I create a file for writing if it does already exist?

like image 954
kaki Avatar asked Jun 22 '10 16:06

kaki


People also ask

Does write mode create a new file?

fopen() for an existing file in write modeWhen mode “w” is specified, it creates an empty file for output operations. What if the file already exists? If a file with the same name already exists, its contents are discarded and the file is treated as a new empty file.

Which mode create new file if file does not exist?

If a file does not exist, append mode creates the file. Note: The key difference between write and append modes is that append does not clear a file's contents.

Does Python create file if not exists?

Python create file if not existTo create a file if not exist in Python, use the open() function. The open() is a built-in Python function that opens the file and returns it as a file object. The open() takes the file path and the mode as input and returns the file object as output.

What mode is required to create a new file?

If a file is in writing mode, then a new file is created if a file doesn't exist at all. If a file is already present on a system, then all the data inside the file is truncated, and it is opened for writing purposes. append mode.


3 Answers

Yes, 'w' is specified as creating a new file -- as the docs put it,

'w' for writing (truncating the file if it already exists),

(clearly inferring it's allowed to not already exist). Please show the exact traceback, not just your own summary of it, as details matters -- e.g. if the actual path you're using is different, what's missing might be the drive, or some intermediate directory; or there might be permission problems.

like image 111
Alex Martelli Avatar answered Nov 14 '22 13:11

Alex Martelli


[Edited to reflect that the problem is likely not forward vs. back slash]

If I understood correctly, you want the file to be automatically created for you, right?

open in write mode does create the file for you. It would be more clear if you told us the exact error you're getting. It might be something like you not having permission to write in C:.

I had previously suggested that it might be because of the forward slash, and indicated that the OP could try:

a = open(r'C:\c.txt', 'w')

Note the r before the file path, indicating raw mode (that is, the backslash won't be interpreted as special).

However, as Brian Neal pointed out (as well as others, commenting elsewhere), that's likely not the reason for the error. I'm keeping it here simply for historical purposes.

like image 42
rbp Avatar answered Nov 14 '22 12:11

rbp


You most probably are trying to write to a directory that doesn't exist or one that you don't have permission writing to.

If you want to write to C:\foo\bar\foobar.txt then make sure that you've got a C:\foo\bar\ that exists (and in case permissions work on Windows, make sure you've got the permission to write there).

Now when you open the file in write mode, a file should be created.

like image 42
Umang Avatar answered Nov 14 '22 13:11

Umang