Thomas Allen wrote: > On Feb 17, 5:31 pm, Peter Otten <__pete...@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)
Don't make things more complicated than necessary. If you can do os.listdir(somedir) you can also do [os.path.join(somedir, fn) for fn in os.listdir(somedir)]. > 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? If you solve the first properly the second might magically disappear. This is what my crystal ball tells me because there is no code in sight... Peter -- http://mail.python.org/mailman/listinfo/python-list