Hiding

Jason Drew jasondrew72 at gmail.com
Mon Aug 1 20:02:08 CEST 2005


Ah, good point, thanks. Must stop forgetting that "C:\file.txt" is bad.

The whole open()/file() clairification is useful too. The Python docs
for the file() constructor simply state that, "File objects ... can be
created with the built-in constructor file() described in section 2.1,
'Built-in Functions.'"
(http://python.org/doc/2.4.1/lib/bltin-file-objects.html)

That's followed by a footnote that states, "file() is new in Python
2.2. The older built-in open() is an alias for file()."

At first sight, that to me suggests that open() has been somewhat
deprecated by file().

However, the description of many of the file methods on the same page
refers to opening files using open(), e.g.:
"mode:  The I/O mode for the file. If the file was created using the
open() built-in function, this will be the value of the mode
parameter."

It all becomes relatively clear in section 2.1, "Built-in Functions"
where the entry for file() states, "The file() constructor is new in
Python 2.2 and is an alias for open(). Both spellings are equivalent.
The intent is for open() to continue to be preferred for use as a
factory function which returns a new file object. The spelling, file is
more suited to type testing (for example, writing 'isinstance(f,
file)')."

I guess that clears it up. Though perhaps the Python doc for the file()
constructor should add that open() is the preferred general-purpose way
to open a file or file-like object?

Thanks again




More information about the Python-list mailing list