Open and closing files

tleeuwenburg at gmail.com tleeuwenburg at gmail.com
Thu Nov 30 23:14:43 EST 2006


John Machin wrote:
> Thomas Ploch wrote:
> > Is it defined behaviour that all files get implicitly closed when not
> > assigning them?
> >
> > Like:
> >
> > def writeFile(fName, foo):
> > 	open(fName, 'w').write(process(foo))
> >
> > compared to:
> >
> >
> > def writeFile(fName, foo):
> > 	fileobj = open(fName, 'w')
> > 	fileobj.write(process(foo))
> > 	fileobj.close()
> >
> > Which one is the 'official' recommended way?
>
> No such thing as an 'official' way.
>
> Nothing happens until the file object is garbage-collected. GC is
> generally not under your control.
>
> Common sense suggests that
> (a) when you are reading multiple files, you close each one explicitly
> (b) when you are writing a file, you close it explicitly as soon as you
> are done with it. That way you can trap any error condition and do
> something moderately sensible -- better than getting an error condition
> during GC when your Python process is shutting down.
>
> HTH,
> John

Not to mention you can get bitten on the ass by a few characters
sitting in a buffer someplace when you expect your file to have been
fully written.

Close the thing.

Cheers,
-T




More information about the Python-list mailing list