3

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?

Bruno
123k33 gold badges278 silver badges389 bronze badges
asked Oct 12, 2010 at 19:48
9
  • 1
    The open() documentation may be interesting to look at. Commented Oct 12, 2010 at 19:51
  • 12
    What you have described is not the purpose of touch Commented Oct 12, 2010 at 19:52
  • 7
    touch will update the timestamp of an existing file, or create a new file if it doesn't exist. Commented Oct 12, 2010 at 19:53
  • @Daenyth sorry. What's the purpose then? Commented Oct 12, 2010 at 19:55
  • 3
    Very misleading title! As others have suggested, this is not what touch does. You might want to consider to rephrase this! Commented Jul 6, 2012 at 11:42

3 Answers 3

12

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.

answered Oct 12, 2010 at 19:51
Sign up to request clarification or add additional context in comments.

2 Comments

Note, this is the correct answer to the question detailed, but this is not a "Python equivalent of touch" (as the question title may imply)
For those innocently looking for a Python implementation of 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/….
7

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.

answered Oct 12, 2010 at 20:49

1 Comment

Here is a version that addresses the "file must exist" issue stackoverflow.com/questions/1158076/…
0

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.
answered Oct 12, 2010 at 19:59

4 Comments

I will definitely eventually use this. Thank you.
Note that the file might become inaccessible between the call to os.access and the call to open.
@Brian, so generally it's better to just use try & except IOError?
@Tim McNamara: It's always better, as it can always happen no matter how many checks you do beforehand.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.