Ich habe das gerade in 5 Minuten geschrieben. Anstelle von os.path.getsize verwende ich st.size von os.stat. Ich glaube nicht, dass es wirklich wichtig ist. Ich verwende os.walk, um rekursiv durch alle Verzeichnisse des aktuellen Arbeitsdirektors zu laufen. Dies wurde nicht für Effizienz oder Leistung geschrieben, nur um etwas in Gang zu setzen. Das Endergebnis ist ein Wörterbuch, das mit Dateierweiterungen für Schlüssel gefüllt ist. Jeder Wert wird in eine Zeichenfolge konvertiert, die ein vom Menschen lesbares Format der Gesamtgröße für jeden Dateityp darstellt. Ich nahm eine Methode, die von jemand anderem geschrieben wurde, um die menschliche Formatierung vorzunehmen. Der letzte Teil ist etwas ausgefallenes, um die Dateitypen nach Größe zu sortieren. Wenn Sie die Tastenkombination Strg + C drücken, wird die "Größenanpassung" abgebrochen, und es werden nur die Ergebnisse ausgedruckt, für die Sie Zeit hatten. Ziemlich spaßig! Danke für die Fahrt, viel Spaß.
import os #using code ripped from: #http://www.5dollarwhitebox.org/drupal/node/84 #to convert to human readable format def convert_bytes(bytes): bytes = float(bytes) if bytes >= 1099511627776: terabytes = bytes / 1099511627776 size = '%.2fT' % terabytes elif bytes >= 1073741824: gigabytes = bytes / 1073741824 size = '%.2fG' % gigabytes elif bytes >= 1048576: megabytes = bytes / 1048576 size = '%.2fM' % megabytes elif bytes >= 1024: kilobytes = bytes / 1024 size = '%.2fK' % kilobytes else: size = '%.2fb' % bytes return size typesizeH = {} typesize = {} try: for root, dirs, files in os.walk('.'): for file in files: prefix, extension = os.path.splitext(file) if extension not in typesize: typesize[extension] = 0 typesize[extension] += os.stat(root + os.sep + file).st_size except KeyboardInterrupt: pass for key in typesize: typesizeH[key] = convert_bytes(typesize[key]) print str(typesizeH) types = typesize.keys() types.sort(cmp=lambda a,b: cmp(typesize[a], typesize[b]), reverse=True) print "Filetype\tSize" for type in types: print "%s\t%s" % (type, typesizeH[type])
Ergebnis:
Filetype Size .7z 99.84M .hpp 42.88M .lib 39.40M .ncb 28.50M .dll 27.87M .exe 25.26M .h 10.33M .obj 10.18M .zip 6.83M .svn-base 3.92M 3.52M .txt 2.28M .csv 1.09M