On 5/6/2016 7:29 PM, Ethan Furman wrote:
On 05/06/2016 04:12 PM, DFS wrote:
On 5/6/2016 4:30 PM, MRAB wrote:

   If you don't want to use the 'with' statement, note that closing the
file is:

           f.close()

   It needs the "()"!

I used close() in 1 place, but close without parens in 2 other places.
So it works either way.  Good catch.

No, it doesn't.  `f.close` simple returns the close function, it doesn't
call it.  The "it works" was simply because Python closed the files for
you later.

Not a big deal in a small program like this, but still a mistake.


Yes.

Check out the answer by 'unutbu' here:

http://stackoverflow.com/questions/1832528/is-close-necessary-when-using-iterator-on-a-python-file-object

He says "I...checked /proc/PID/fd for when the file descriptor was closed. It appears that when you break out of the for loop, the file is closed for you."

Improper f.close didn't seem to affect any of the files my program wrote - and I checked a lot of them when I was writing the code.

Maybe it worked because the last time the file was written to was in a for loop, so I got lucky and the files weren't truncated? Don't know.

Did you notice any other gotchas in the program?


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

Reply via email to