[Tutor] Any Tutor there ? Removing redundant parameters in a models file having include files.

Lie Ryan lie.1296 at gmail.com
Sun Feb 28 17:07:44 CET 2010


On 03/01/10 02:49, Karim Liateni wrote:
> Lie Ryan wrote:
>> On 03/01/10 01:12, Alan Gauld wrote:
>>   
>>>> def getLines(file):
>>>>   """Get the content of a file in a lines list form."""
>>>>   f = open(file, 'r')
>>>>   lines = f.readlines()
>>>>   f.close()
>>>>   return lines
>>>>       
>>> I'm not sure these functions add enough value to ghave them. I';d
>>> probably just use
>>>
>>> try: open(outfile,'w').writelines(lines)
>>> except IOError: #handle error
>>>
>>> try: lines = open(filename).readlines()
>>> except IOError: #handle error
>>>
>>> The close will be done automatically since you don't hold a reference to
>>> the file
>>>     
>>
>> Remember why we have the new with-block? It's precisely because files
>> will be automagically closed only if we're running on CPython; Python
>> the language and thus alternative implementations doesn't guarantee
>> automatic closing. I'd agree with the function having minimal utility
>> value though:
>>
>> with open(file) as f:
>>     lines = f.readlines()
>>     # f.close() will be called by the context manager
>>
>> and if you're just copying to another file:
>>
>> from contextlib import nested
>> with nested(open(infile), open(outfile, 'w')) as (fin, fout):
>>     fout.write(fin.read())
>>
>> or even better, as Alan suggested, using shutil.copyfile().
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>   
> Thank you Lie but I have a restriction on the python version I must use
> v2.2.
> This feature is available only on later version 2.5 I believe.

Then you should at the least use the try-finally block, I think that one
has been there since 2.2? If you didn't use try-finally, there is no
guarantee that f.close() would be called if an exception happened in the
middle of reading/writing (e.g. KeyboardInterrupt, or perhaps user
plugging off the thumbdrive, or bit more realistic having a full
harddisk or exceeded some disk quota)



More information about the Tutor mailing list