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@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@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
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor