import os,os.path,stat info = [] archive = None total_keys = 0 total_dirs = 0 def collect_info(path,i): global total_dirs,total_keys s = os.stat(path) if stat.S_ISDIR(s.st_mode): total_dirs += 1 l = os.listdir(path) n = len(l) if i==len(info): info.append(n) elif n>info[i]: info[i] = n i += 1 for f in l: collect_info(os.path.join(path,f),i) else: total_keys += 1 def print_info(): i = 0 for n in info: print "Max keys at level %2s: %7s" % (i,n) i += 1 print "Total number of dirs: %7s" % total_dirs print "Total number of keys: %7s" % total_keys fd = os.popen("du -csh %s" % archive,"r") s = fd.read() fd.close() s = s.split()[0] print "Disk footprint : %7s" % s if __name__ == '__main__': import sys from optparse import OptionParser parser = OptionParser(usage="usage: %prog ARCHIVE") (options, args) = parser.parse_args() if len(args) != 1: print sys.stderr, "expected exactly 1 positional argument" sys.exit(1) archive = args[0] collect_info(archive,0) print_info() sys.exit(0)