I'm writing a function and I want it to touch
a file so that I can write to that file. If the file doesn't exist, I will get an error. How can I say that?
3 Answers 3
Just open the file for writing and it will be created if it doesn't exist (assuming you have proper permission to write to that location).
f = open('some_file_that_might_not_exist.txt', 'w')
f.write(data)
You will get an IOError
if you can't open the file for writing.
2 Comments
touch
, note the above is not comparable to unix touch
because USING THE w
OPTION WILL DELETE THE CONTENTS OF THE FILE IF IT ALREADY EXISTS. touch
only changes timestamps if the file already exists. For a Python implementation of touch
, see stackoverflow.com/questions/1158076/….Per the docs, os.utime() will function similar to touch if you give it None as the time argument, for example:
os.utime("test_file", None)
When I tested this (on Linux and later Windows), I found that test_file had to already exist. YMMV on other OS's.
Of course, this doesn't really address writing to the file. As other answers have said, you usually want open for that and try ... except for catching exceptions when the file does not exist.
1 Comment
if you actually want to raise an error if the file doesn't exist, you can use
import os
if not os.access('file'):
#raise error
f = open('file')
#etc.
4 Comments
os.access
and the call to open
.try
& except IOError
?
touch
touch
will update the timestamp of an existing file, or create a new file if it doesn't exist.touch
does. You might want to consider to rephrase this!