Christopher Spears wrote: > I am trying to write a function that takes a directory > name and describes the contents of the directory (file > name and size) recursively. Here is what I have > written so far: > > import os, os.path > > def describeDirectory(directory): > if os.listdir(directory) == []: > print "Empty directory!" > else: > for files in os.listdir(directory): > if os.path.isdir(files): > print files, ' is a directory!' > else: > print files, 'SIZE: ', > os.path.getsize(files) > > print 'Current Directory: \n' > describeDirectory('.') > print '\n' > print './testFiles: \n' > describeDirectory('./testFiles')
Chris, os.path.getsize() needs the full path or relative path to the file, but os.listdir() just returns the bare file name, so there is a slight mismatch here. describeDirectory() works for the current dir because the bare file name is the correct relative path. You should use os.path.join(directory, files) to create the full path to pass to os.path.getsize(). BTW 'files' is not such a great name because it is just one file, not multiple. But don't change it to 'file', that is the name of a built-in function! Maybe 'f' or 'name' or 'filename'. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor