A fun python CLI program for all to enjoy!

DFS nospam at dfs.com
Fri May 6 19:58:50 EDT 2016


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?





More information about the Python-list mailing list