Small `du' reformatter :-)
François Pinard
pinard at iro.umontreal.ca
Thu Jan 20 18:11:42 EST 2000
More information about the Python-list mailing list
Thu Jan 20 18:11:42 EST 2000
- Previous message (by thread): Small `du' reformatter :-)
- Next message (by thread): Small `du' reformatter :-)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi, people. I knew I wrote a small Python tool to reformat `du' output, but I lost it for a while, and unexpectedly stumbled on it today, looking for something unrelated. Here it is. So if I loose it again, I'll ask you! :-) -------------- next part -------------- #!/usr/bin/python # Produce directory hierarchy with sizes, well sorted and indented. # Copyright ? 1996, 1999 Progiciels Bourbeau-Pinard inc. # Fran?ois Pinard <pinard at iro.umontreal.ca>, 1996. # Idea from Pierre Rioux <riouxp at bch.umontreal.ca>, 1996-07-12. import os, re, string, sys def main(*arguments): # Get data properly sorted. items = map(presort, os.popen('du %s' % string.join(arguments)).readlines()) items.sort() items = map(postsort, items) # Erase unneeded fragments of vertical lines. clean(items) items.reverse() clean(items) items.reverse() # Erase leftmost white columns. skip = 0 split, size = items[0] while not split[skip]: skip = skip + 1 # Produce display. for split, size in items: sys.stdout.write('%7s ' % size) for item in split[skip:-1]: if item: sys.stdout.write('| ') else: sys.stdout.write(' ') sys.stdout.write('\\_ %s' % split[-1]) def presort(line): size, path = string.split(line, '\t') return path, size def postsort((path, size)): return string.split(path, '/'), size def clean(items): # The basename is always written. Intermediate directories # normally print as `|', yet None is used to inhibit the line. draw = [] for split, size in items: while len(draw) > len(split) - 1: draw.pop() while len(draw) < len(split) - 1: draw.append(0) draw.append(1) for counter in range(len(split) - 1): if not draw[counter]: split[counter] = None if __name__ == '__main__': apply(main, sys.argv[1:]) -------------- next part -------------- -- Fran?ois Pinard http://www.iro.umontreal.ca/~pinard
- Previous message (by thread): Small `du' reformatter :-)
- Next message (by thread): Small `du' reformatter :-)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list