Alex Rivera | Logout

Python - When to use file vs open

Asked 2008-09-22T03:04:14.543
141

What's the difference between file and open in Python? When should I use which one? (Say I'm in 2.5)

Edit
Report

2 Answers

19

file() is a type, like an int or a list. open() is a function for opening files, and will return a file object.

This is an example of when you should use open:

f = open(filename, 'r')
for line in f:
    process(line)
f.close()

This is an example of when you should use file:

class LoggingFile(file):
    def write(self, data):
        sys.stderr.write("Wrote %d bytes\n" % len(data))
        super(LoggingFile, self).write(data)

As you can see, there's a good reason for both to exist, and a clear use-case for both.

answered 2008-09-22T03:32:08.860
4

Only ever use open() for opening files. file() is actually being removed in 3.0, and it's deprecated at the moment. They've had a sort of strange relationship, but file() is going now, so there's no need to worry anymore.

The following is from the Python 2.6 docs. [bracket stuff] added by me.

When opening a file, it’s preferable to use open() instead of invoking this [file()] constructor directly. file is more suited to type testing (for example, writing isinstance(f, file)

answered 2008-09-22T03:10:45.183

Your Answer