A file iteration question/problem
Arnaud Delobelle
arnodel at googlemail.com
Sun Apr 6 12:18:09 EDT 2008
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)
Or if you want the filename to be the argument of you function, wrap
it in a non-recursive function:
def fun(filename):
lines = iter(open(filename))
def recfun():
for line in lines:
# Do stuff
if condition:
recfun()
recfun()
HTH
--
Arnaud
More information about the Python-list
mailing list