#!/usr/bin/env python # -*- coding: utf-8 -*- # # filesizes.py # Anfangsziffern der Dateigrößen rekursiv zählen # # $Id: filesizes.py,v 1.1 2007/12/25 21:16:36 elias Exp $ import sys import os import os.path def _count_dir (c, path): for filename in os.listdir (path): absname = os.path.join (path, filename) if os.path.islink (absname): continue if (os.path.isdir (absname)): try: _count_dir (c, absname) except: sys.stderr.write ("Warning: failed for \"%s\"\n" % (absname,)) else: try: size = os.stat (absname).st_size if size > 0: c[int (str (size)[0])] += 1 except: pass def count (dirnames): c = map (lambda x: 0, range (10)) for i in dirnames: i = os.path.expanduser (i) adir = os.path.abspath (i) if not os.path.isdir (adir): raise RuntimeException, "%s is not a directory" % (adir,) _count_dir (c, adir) return c if __name__ == '__main__': args = sys.argv[1:] if len (args) == 0: args.append (raw_input ('Directory to count initial digits: ')) c = count (args) cs = sum (c) for i in range (1, 10): p = 100.0 * c[i] / cs print '%1d %10d %7.3f%%' % (i, c[i], p)