#! /usr/bin/env python3# Format du output in a tree shapeimport os, sys, errnodef main():p = os.popen('du ' + ' '.join(sys.argv[1:]), 'r')total, d = None, {}for line in p.readlines():i = 0while line[i] in '0123456789': i = i+1size = eval(line[:i])while line[i] in ' \t': i = i+1filename = line[i:-1]comps = filename.split('/')if comps[0] == '': comps[0] = '/'if comps[len(comps)-1] == '': del comps[len(comps)-1]total, d = store(size, comps, total, d)try:display(total, d)except IOError as e:if e.errno != errno.EPIPE:raisedef store(size, comps, total, d):if comps == []:return size, dif comps[0] not in d:d[comps[0]] = None, {}t1, d1 = d[comps[0]]d[comps[0]] = store(size, comps[1:], t1, d1)return total, ddef display(total, d):show(total, d, '')def show(total, d, prefix):if not d: returnlist = []sum = 0for key in d.keys():tsub, dsub = d[key]list.append((tsub, key))if tsub is not None: sum = sum + tsub## if sum < total:## list.append((total - sum, os.curdir))list.sort()list.reverse()width = len(repr(list[0][0]))for tsub, key in list:if tsub is None:psub = prefixelse:print(prefix + repr(tsub).rjust(width) + ' ' + key)psub = prefix + ' '*(width-1) + '|' + ' '*(len(key)+1)if key in d:show(tsub, d[key][1], psub)if __name__ == '__main__':main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。