"Maximum recursion depth exceeded"...why?

Thomas Allen thomasmallen at gmail.com
Tue Feb 17 23:39:39 CET 2009


On Feb 17, 5:31 pm, Peter Otten <__pete... at web.de> wrote:
> Thomas Allen wrote:
> > I must not be understanding something. This is a simple recursive
> > function that prints all HTML files in argv[1] as its scans the
> > directory's contents. Why do I get a RuntimeError for recursion depth
> > exceeded?
>
> > #!/usr/bin/env python
>
> > import os, sys
>
> > def main():
> >     absToRel(sys.argv[1], sys.argv[2])
>
> > def absToRel(dir, root):
> >     for filename in os.listdir(dir):
>
>           filename = os.path.join(dir, filename)
>
> >         if os.path.isdir(filename):
> >             absToRel(filename, root)
> >         else:
> >             if(filename.endswith("html") or filename.endswith("htm")):
> >                 print filename
>
> > if __name__ == "__main__":
> >     main()
>
> Without the addition for a directory and a subdirectory of the same
> name, "dir/dir", os.listdir("dir") has "dir" (the child) in the result list
> which triggers an absToRel() call on "dir" (the parent) ad infinitum.
>
> Peter

I have two problems in this case:

1. I don't know how to reliably map the current filename to an
absolute path beyond the top-most directory because my method of doing
so would be to os.path.join(os.getcwd(), filename)

2. For some reason, only one folder in the directory gets marked as a
directory itself when there are about nine others in the top-most
directory. I don't even know where to begin to solve this one.

I'm sure the first is an easy answer, but what do I need to do to
solve the second?



More information about the Python-list mailing list