En Wed, 24 Dec 2008 15:03:58 -0200, MRAB <goo...@mrabarnett.plus.com> escribió:

I have a generator whose aim is to returns consecutive lines from a file (the listing below is a simplified version). However, as it is written now, the generator method changes the text file pointer to end of file after first invocation.
Namely, the file pointer changes from 0 to 6623 on line 24.

It might be that the generator method of self.input_file is reading the file a chunk at a time for efficiency even though it's yielding a line at a time.

I think this is the case too.
I can think of 3 alternatives:

a) open the file unbuffered (bufsize=0). But I think this would greatly decrease performance.

b) keep track internally of file position (by adding each line length). The file should be opened in binary mode in this case (to avoid any '\n' translation).

c) return line numbers only, instead of file positions. Seeking to a certain line number requires to re-read the whole file from start; depending on how often this is required, and how big is the file, this might be acceptable.

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to