On 09/05/2013 19:21, Steven D'Aprano wrote:
On Thu, 09 May 2013 09:07:42 -0400, Roy Smith wrote:

In article <518b32ef$0$11120$c3e8...@news.astraweb.com>,
 Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote:

There is no sensible use-case for creating a file without opening it.

Sure there is.  Sometimes just creating the name in the file system is
all you want to do.  That's why, for example, the unix "touch" command
exists.

Since I neglected to make it clear above that I was still talking about
file objects, rather than files on disk, I take responsibility for this
misunderstanding. I thought that since I kept talking about file
*objects* and *constructors*, people would understand that I was talking
about in-memory objects rather than on-disk files. Mea culpa.

So, let me rephrase that sentence, and hopefully clear up any further
misunderstandings.

There is no sensible use-case for creating a file OBJECT unless it
initially wraps an open file pointer.

You might want to do this:

f = File(path)
if f.exists():
    ...

This would be an alternative to:

if os.path.exists(path):
    ...

This principle doesn't just apply to OOP languages. The standard C I/O
library doesn't support creating a file descriptor unless it is a file
descriptor to an open file. open() has the semantics:

"It shall create an open file description that refers to a file and a
file descriptor that refers to that open file description."

http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html

and there is no corresponding function to create a *closed* file
description. (Because such a thing would be pointless.)

[snip]

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to