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

Karim Liateni karim.liateni at free.fr
Sun Feb 28 17:38:09 CET 2010


Lie Ryan wrote:
> 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)
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
>   
Thank you Lie.
Yes, in fact I did it all the time during my years of Java development.
In perl I used or open() or die( "msg" ) structure.
I bypassed it because I wanted to construct the blocs very quickly like 
a 'beginner'.
I was excited to make it work as fast as ossible to see if I can program 
something
decent in Python. (gaining confidence? haaa human nature!).

I definitely enjoy python (and not very far in spirit my loving Lisp).
I definitely HATE tcl, java.

Now I will improve quality and robustness.

Thanks a lot!

Karim

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20100228/9a0a68c5/attachment.html>


More information about the Tutor mailing list