Caleb Hattingh wrote: > Your code works on some folders but not others. For example, it works > on my /usr/lib/python2.4 (the example you gave), but on other folders > it terminates early with StopIteration exception on the > os.walk().next() step. > > I haven't really looked at this closely enough yet, but it looks as > though there may be an issue with permissions (and not having enough) > on subfolders within a tree.
You're quite correct. Here's a version of John's code that handles such cases: import warnings def foldersize(fdir): """Returns the size of all data in folder fdir in bytes""" try: root, dirs, files = os.walk(fdir).next() except StopIteration: warnings.warn("Could not access " + fdir) return 0 files = [os.path.join(root, x) for x in files] dirs = [os.path.join(root, x) for x in dirs] return sum(map(os.path.getsize, files)) + sum(map(foldersize, dirs)) There's also another bug in the prettier() function that barfs on empty directories, as it's taking the log of 0. The fix: exponent = int(math.log(max(1, bytesize), 1024)) --Ben -- http://mail.python.org/mailman/listinfo/python-list