Recursion. if os.path.isdir(d): describeDirectory(d)
Since your printing from the function itself, you may want to add a level or depth arguement with a default value of 0. def describeDirectory(directory, level=0): Then call the function recursively with describeDirectory(d,level+1) Use the level variable in the print statements for proper indentation. Or something like that, -Steve Christopher Spears wrote: > I am trying to write a function that takes a > directory's name, finds any subdirectories, and then > prints out the size of the files in all found > directories. > > import os, os.path > > def describeDirectory(directory): > dirList = [directory] > for d in os.listdir(directory): > if os.path.isdir(d): > dirList.append(d) > for d in dirList: > print d, ':' > for f in os.listdir(d): > name = os.path.join(d, f) > print '\t', name, 'SIZE: ', > os.path.getsize(name) > > describeDirectory('.') > > Here is the output: > > > . : > .\changePeppers.py SIZE: 915 > .\describeDirectory.py SIZE: 549 > .\describeDirectory.pyc SIZE: 514 > .\describeDirectory01.py SIZE: 388 > .\error_log SIZE: 778 > .\makezeros.py SIZE: 147 > .\makezeros.pyc SIZE: 481 > .\modPrompt.py SIZE: 342 > .\modPrompt.pyc SIZE: 698 > .\output SIZE: 387 > .\pepper.txt SIZE: 601 > .\testFiles SIZE: 0 > .\textWrapper.py SIZE: 619 > .\textWrapper.pyc SIZE: 1092 > .\timings.py SIZE: 567 > .\timings.pyc SIZE: 733 > testFiles : > testFiles\renameFiles.py SIZE: 351 > testFiles\some_date SIZE: 29 > testFiles\stupid_text.txt SIZE: 12 > testFiles\testDir SIZE: 0 > > As you see, the problem is that there is another > directory under testFiles called testDir, but the > function doesn't check the directory for files. The > function needs to find every directory (including > subdirectories within directories). Any hints? > > I'm starting to wonder if I should abandon trying to > do this with one function. For example, I could > create one function that finds every directory. This > information would then be passed to another function > that returns the files' sizes. > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor