"Maximum recursion depth exceeded"...why?

Peter Otten __peter__ at web.de
Tue Feb 17 17:31:18 EST 2009


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



More information about the Python-list mailing list