Tuesday, July 27, 2010

oswalk

import sys
import os
import os.path

def walk_tree(path):
# print path
for rt, ds, fs in os.walk(path):
for f in fs:
fn = os.path.join(rt, f)
if os.path.isfile(fn):
# yield os.getmtime(fn), fn
yield os.path.basename(fn), os.path.getsize(fn), os.path.getmtime(fn),fn

def walk_dirs(path):
for rt, ds, fs in os.walk(path):
for d in ds:
# print d
dn = os.path.join(rt, d)
if os.path.isdir(dn):
yield dn
# yield os.getmtime(fn), fn
# yield os.path.basename(fn), os.path.getsize(fn), os.path.getmtime(fn),fn




#print sys.argv[1:]




def listing(path):
childs=[os.path.join(path,x) for x in os.listdir(path)]
dirs=[x for x in childs if os.path.isdir(x)]
# dirs=walk_dirs(path)
for d in dirs:
# print d
# print "======================================"
# print d
total=sum([x[1] for x in walk_tree(d)])
yield path,os.path.dirname(d),d,total


# yield path,os.path.dirname(d),d,total

from operator import itemgetter, attrgetter

ss=sorted(listing(sys.argv[1]),reverse=True,key=itemgetter(3))

for s in ss[:4]:
print "\t".join([str(s)])
# raw_input();
##for param in sys.argv[1:]:
## print param
## foo=listing(param)
##
## print "========="
##
## bigdirsize={}
## smalldirsize={}
## for f in foo:
## print f
## if f[0] in bigdirsize:
## bigdirsize[f[0]] += f[3]
## else:
## bigdirsize[f[0]] = f[3]
## if f[0] in smalldirsize:
## smalldirsize[f[1]] += f[3]
## else:
## smalldirsize[f[1]] = f[3]
##
## for b in bigdirsize.keys():
## print b,bigdirsize[b]
## print "=========="
### for b in smalldirsize.keys():
### print b,smalldirsize[b]
##
#asdf=raw_input()
#print "asdf"
#
#
#
##def keyfunc(x):
## return x[0]
#
#from itertools import groupby
#
#groups = []
#uniquekeys = []
#totalsize={}
##data = sorted(foo, key=keyfunc)
#for k, g in groupby(foo, lambda (x): x[0]):
# groups.append(list(g)) # Store group iterator as a list
# uniquekeys.append(k)
#
#
#for g in groups:
# total=0.1
# name=0.0
# for gg in g:
# name=gg[0]
# total+=gg[2]
# foo=[]
# for gg in g:
# foo.append([int(100 * gg[2]/total),gg[2]/1024/1024,gg[0],gg[1]])
#
# s=sorted(foo,reverse=True)
# perc=0
# for element in s:
# perc+=element[0]
# print "\t".join([str(x) for x in element])
# if perc > 80 or element[0]<5: break
# print
## print s
#
#
## print gg[0],
## print gg
## print "\n\n"
## print name,total
#
##for k in uniquekeys:
## print k
#
##for g in groups:
## print "----------------------"
## print g[0][0],
## print sum([x[2] for x in g ])
### print len(g)
## for item in groups:
## print item
##for u in uniquekeys:
## print u
#
#
#
#
## foo=raw_input()
## for f in walk_tree(d):
## print f,
## print walk_tree(d)
##x=walk_tree(sys.argv[1:][0])
##for y in x:
## print y
##for x in walk_tree(sys.argv[1:]):
## print x[0],x[1]

No comments:

Post a Comment