Op Thursday 30 Apr 2015 09:33 CEST schreef Chris Angelico: > On Thu, Apr 30, 2015 at 4:27 PM, Cecil Westerhof <ce...@decebal.nl> wrote: >>> with open("input.cpp") as f: >>> lines = f.readlines() >>> print(lines[7]) >> >> Is the following not better: >> print(open('input.cpp', 'r').readlines()[7]) >> >> Time is the same (about 25 seconds for 100.000 calls), but I find >> this more clear. > > The significant difference is that the 'with' block guarantees to > close the file promptly. With CPython it probably won't make a lot > of difference, and in a tiny script it won't do much either, but if > you do this on Jython or IronPython or MicroPython or some other > implementation, it may well make a gigantic difference - your loop > might actually fail because the file's still open.
I thought that in this case the file was also closed. But if that is not the case I should think about this when I switch to another version as CPython. I wrote a module where I have: def get_indexed_message(message_filename, index): """ Get index message from a file, where 0 gets the first message """ return open(expanduser(message_filename), 'r').readlines()[index].rstrip() But this can be used by others also and they could be using Jython or another implementation. So should I rewrite this and other functions? Or would it be OK because the open is in a function? -- Cecil Westerhof Senior Software Engineer LinkedIn: http://www.linkedin.com/in/cecilwesterhof -- https://mail.python.org/mailman/listinfo/python-list