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 - [email protected] >> 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 - [email protected] To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor
