[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