seek operation in python

Cecil Westerhof Cecil at decebal.nl
Thu Apr 30 10:06:13 CEST 2015


Op Thursday 30 Apr 2015 09:33 CEST schreef Chris Angelico:

> On Thu, Apr 30, 2015 at 4:27 PM, Cecil Westerhof <Cecil at 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



More information about the Python-list mailing list