Why no open(f, "w").write()?
kkto at csis.hku.hk
Sun Jun 2 06:30:57 CEST 2002
>>>>> "John" == John La Rooy <larooy at xtar.co.nz> writes:
John> I've often used the 'open(f, "w").write()' right at the end of a
John> program where I know the file is about to get closed anyway. From
John> what I've seen here about Jython, it seems that I can't even count
John> on that behaviour. eeek!
John> Perhaps the specification will some day change to make the objects
John> returned by open() to be *smarter* so we can count on them knowing
John> when they should flush and when they should close the toilet seat.
John> A few people seem to be getting stuck on the explicit instead of
John> implicit idea but I think that is mostly because we are used to be
John> told to close files and we've all had a few late nights because we
John> forgot to. Just as lots of us learned we should always free() our
John> mallocs() and now we think nothing of letting python do that
John> housekeeping for us.
That's possible if you just want to make sure that all files are closed at
the end of execution: just keep a list of opened files objects somewhere
(perhaps using weak references?), and, when the program exits, close all of
them. This is standard OS technique (all process has a list of opened file,
which are closed on exit). It is even easy to implement at library level.
But that won't solve all the problems. In particular, if the output of your
files are read by somebody else, you have to know at some time that the
content is valid for reading.
More information about the Python-list