import os
import os.path
import sys
def histogram(root_dirname):
ext = dict()
for root, dirnames, filenames in os.walk(root_dirname):
for filename in filenames:
extname = os.path.splitext(filename)[1]
filepath = os.path.join(root, filename)
ext[extname] = (ext.get(extname, [0, 0])[0] + 1,
ext.get(extname, [0, 0])[1] + os.path.getsize(filepath))
return ext
if __name__ == '__main__':
assert len(sys.argv) == 3
output_file = sys.argv[2]
ext = histogram(sys.argv[1])
total = sum([a[0] for a in ext.values()])
with open(output_file, 'w') as f:
for k, v in ext.items():
f.write('{}{}B{}\n'.format(
k[1:].rjust(5),
'{}'.format(str(v[1]).rjust(14)),
''.join(['#' for i in range(round((v[0] / total) * 50.0))]).rjust(60))
)
aW1wb3J0IG9zCmltcG9ydCBvcy5wYXRoCmltcG9ydCBzeXMKCgpkZWYgaGlzdG9ncmFtKHJvb3RfZGlybmFtZSk6CiAgICBleHQgPSBkaWN0KCkKICAgIGZvciByb290LCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsocm9vdF9kaXJuYW1lKToKICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgICAgICBleHRuYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMV0KICAgICAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZW5hbWUpCiAgICAgICAgICAgIGV4dFtleHRuYW1lXSA9IChleHQuZ2V0KGV4dG5hbWUsIFswLCAwXSlbMF0gKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0LmdldChleHRuYW1lLCBbMCwgMF0pWzFdICsgb3MucGF0aC5nZXRzaXplKGZpbGVwYXRoKSkKICAgIHJldHVybiBleHQKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICBhc3NlcnQgbGVuKHN5cy5hcmd2KSA9PSAzCiAgICBvdXRwdXRfZmlsZSA9IHN5cy5hcmd2WzJdCiAgICBleHQgPSBoaXN0b2dyYW0oc3lzLmFyZ3ZbMV0pCiAgICB0b3RhbCA9IHN1bShbYVswXSBmb3IgYSBpbiBleHQudmFsdWVzKCldKQogICAgd2l0aCBvcGVuKG91dHB1dF9maWxlLCAndycpIGFzIGY6CiAgICAgICAgZm9yIGssIHYgaW4gZXh0Lml0ZW1zKCk6CiAgICAgICAgICAgIGYud3JpdGUoJ3t9e31Ce31cbicuZm9ybWF0KAogICAgICAgICAgICAgICAga1sxOl0ucmp1c3QoNSksCiAgICAgICAgICAgICAgICAne30nLmZvcm1hdChzdHIodlsxXSkucmp1c3QoMTQpKSwKICAgICAgICAgICAgICAgICcnLmpvaW4oWycjJyBmb3IgaSBpbiAgcmFuZ2Uocm91bmQoKHZbMF0gLyB0b3RhbCkgKiA1MC4wKSldKS5yanVzdCg2MCkpCiAgICAgICAgICAgICAgICApCg==