A file iteration question/problem
tinnews at isbd.co.uk
tinnews at isbd.co.uk
Mon Apr 7 09:09:13 EDT 2008
Arnaud Delobelle <arnodel at googlemail.com> wrote:
> On Apr 6, 4:40 pm, tinn... at isbd.co.uk wrote:
> > I want to iterate through the lines of a file in a recursive function
> > so I can't use:-
> >
> > f = open(listfile, 'r')
> > for ln in f:
> >
> > because when the function calls itself it won't see any more lines in
> > the file. E.g. more fully I want to do somthing like:-
> >
> > def recfun(f)
> > while True:
> > str = readline(f)
> > if (str == "")
> > break;
> > #
> > # do various tests
> > #
> > if <something>:
> > recfun(f)
> >
> > Is there no more elegant way of doing this than that rather clumsy
> > "while True" followed by a test?
> >
> > --
> > Chris Green
>
> You could use an iterator over the lines of the file:
>
> def recfun(lines):
> for line in lines:
> # Do stuff
> if condition:
> recfun(lines)
>
> lines = iter(open(filename))
> recfun(lines)
>
Does that work though? If you iterate through the file with the "for
line in lines:" in the first call of recfun(lines) you surely can't do
"for line in lines:" and get any sort of sensible result in recursive
calls of recfun(lines) can you?
--
Chris Green
More information about the Python-list
mailing list