aus Spaß an der Freud, zu Übungszwecken, und weil es unter Windows den bash-Befehl "du" nicht gibt, hab ich hier mal was kleines zusammengeschustert. Das Script listet die Größe eines Ordners, sowie der enthaltenen Unterordner (nur die erste Ebene) und Dateien. Ausserdem zeigt es noch wieviele Dateien und Verzeichnisse sich direkt in den Unterordnern befinden (braucht ausser einer Arbeitskollegin von mir wohl kein normalsterblicher

Da ich in meinem Bekanntenkreis der Einzige bin der seine Freizeit mit sowas zubringt, würde mich doch die eine oder andere Meinung von Euch dazu Interessieren. Vieleicht ließe sich das ganze ja in einem 3-Zeiler realisieren, und ich hab einfach um 28 Ecken zuviel gedacht....

Also Kommentare immer gerne (aber nicht zu den Variablennamen (auch wenn sie eine Schmähung verdient hätten)... die sind z.T. aus Tippfehlern entstanden, die ich dann einfach fortgeführt hab

Los gehts:
Code: Alles auswählen
#!/usr/bin/python
import os
from os.path import join, getsize
path = raw_input("Verzeichnis (e.g. /home): ")
def getsizes(path):
bytes=[]
allsizes = []
filse = []
dirse = []
content = os.listdir(path) # inhalt von path
os.chdir(path)
for a in range(0,len(content)): # checken ob dir oder file
if os.path.isdir(content[a]):
dirse.append(content[a])
elif os.path.isfile(content[a]):
filse.append(content[a])
else:
break
filse.sort()
dirse.sort()
print ""
print ""
print "size type dirs/files name"
print "::::::::::::::::::::::::::::::::::::::::::::"
##############################################
##### FOLDERS ################
for i in range(0,len(dirse)):
u = dirse[i]
subpath = join(path, u)
tmpbytes =[]
tmpdirs = []
tmpfiles = []
for paths, dirs, files in os.walk(subpath):
tmpfiles.append(files)
tmpdirs.append(dirs)
for name in files:
datei = join(paths, name)
if os.path.isfile(datei):
size = getsize(datei)
tmpbytes.append(size)
x = (sum(tmpbytes)/1024)/1024.0
allsizes.append(x)
a,b = len(tmpfiles[0]),len(tmpdirs[0])
print "%.3f" % x, 'MB DIR ',b,"/",a," ",u
print '---'
##############################################
##### FILES ################
for as in range(0,len(filse)):
datei = join(path, filse[as])
filebytes = []
if os.path.isfile(datei):
filesize = getsize(datei)
filebytes.append(filesize)
x = (sum(filebytes)/1024)/1024.0
allsizes.append(x)
print "%.3f" %x, 'MB file ',filse[as]
print '---'
mastersize = sum(allsizes)
print path, "%.2f" %mastersize, "MB"
getsizes(path)
Viel Spaß, danke und bis später,
Thomas