File Parsing Question
Peter Otten
__peter__ at web.de
Thu Sep 13 02:03:44 EDT 2007
Am Wed, 12 Sep 2007 17:28:08 -0500 schrieb Shankarjee Krishnamoorthi:
> I would prefer to use something with seek.
Writing Perl in any language?
> I am not able to use seek()
> with "for line in inp". Use tell and seek does not seem to do anything
> with the code. When I try to do
>
> for line in inp.readlines():
readlines() reads the whole file at once, so inp.tell() will give the
position at the end of the file from now on.
> # Top of Loop
> if not condition in line:
> do_something
> else:
> for lines in inp.readlines():
> if not condition
> do_something
> else:
> break
> pos = inp.tell()
> inp.seek(pos) ---> This line has not effect in the program
>
> Not sure if Iam missing something very basic. Also the previous line
> needs to be used in the position I call # Top of Loop.
If you want to use seek/tell you can't iterate over the file directly
because
for line in inp:
# ...
reads ahead to make that iteration highly efficient -- so you will often
get a position further ahead than the end of the current line.
But you can use readline() (which doesn't read ahead) in conjunction with
tell/seek; just replace all occurences of
for line in inp:
# ...
with
for line in iter(inp.readline, ""):
# ...
Peter
More information about the Python-list
mailing list