ordnergröße feststellen mit os?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Dienstag 15. März 2005, 18:57

Hallo,
im os modul gibts ja die funktion getsize, die funktioniert aber nur mit dateien und leider nicht mit verzeichnissen (oder ich machs einfach nur falsch).
Weiss jemand, wie es richtig geht?

Ich könnte die ordnergröße mit os.sys("du -h") rausbekommen, da müsste mir ja theoretisch alles angezeigt werden, aber ich sitze erstens gerade an einem win-rechner und zweitens werden dabei glaube ich nur 0 oder 1 als werte übergeben. D.h. diese Variante läuft nicht auf allen Systemen, und ich kann das Ergebnis nicht weiterverwenden....

danke
chaos
User
Beiträge: 52
Registriert: Samstag 21. August 2004, 11:19

Dienstag 15. März 2005, 20:26

also als faule Lösung würd ein

Code: Alles auswählen

a=os.popen('du.h')
a[1].read()
unter *NIX helfen.

Bei Windows fällt mir momentan nur ein, über alle Dateien zu iterieren:
0.) Liste alle Dateien auf
1.) Teste ob Datei Verzeichnis ist
2.) Falls ja merk dir aktuellen Dateinamen und geh in Unterverzeichnis und fang mit 0. an
3.) Sonst: Ermittle die Größe der Datei und zähle diese zur Gesammtgröße hinzu
4.) Nimm die nächste Datei und geh zu 1.
Slackware will never die.
Benutzeravatar
knekke
User
Beiträge: 100
Registriert: Freitag 29. Oktober 2004, 17:23
Wohnort: Schweden

Dienstag 15. März 2005, 20:45

ja, die beiden Ideen hatte ich auch noch, wobei die erste unter win nicht zieht, und ich bei der zweiten zuviel aufwand vermutet habe, zumal ich ja nicht weiß, ob es nicht einen ganz simplen befehl dafür gibt.
Aber ich werd mich mal an die iteration machen. Übt ja auch :wink:
Bin mal gespannt wie lange das skript dann dafür braucht.....
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 15. März 2005, 20:55

Unter Windows gibt es keine Möglichkeit zu ermitteln, wie groß ein Verzeichnis mit allen Unterverzeichnissen ist... Das liegt daran, das FAT oder NTFS das nicht abspeichert! Aber speichert denn ext3 ect. die Information ??? Oder ist "du.h" nur ein Skript welches auch rekursiv arbeitet???

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
chaos
User
Beiträge: 52
Registriert: Samstag 21. August 2004, 11:19

Dienstag 15. März 2005, 21:01

Uuups das sollte nicht du.h sondern du -h sein.
du ist ein *NIX-Systemprogram, hier die manpage:
du Manpage

ciao
chaos

PS Kam leider mit [url] und <a href nicht hin ;(

Edit (Leonidas): Hab die URL mal in Tags gesetzt.
Slackware will never die.
BlackJack

Dienstag 15. März 2005, 22:57

jens hat geschrieben:Unter Windows gibt es keine Möglichkeit zu ermitteln, wie groß ein Verzeichnis mit allen Unterverzeichnissen ist... Das liegt daran, das FAT oder NTFS das nicht abspeichert! Aber speichert denn ext3 ect. die Information ??? Oder ist "du.h" nur ein Skript welches auch rekursiv arbeitet???
``du`` ist ein Programm, das rekursiv arbeitet. Wie sollte es auch anders gehen? Das System müsste sonst immer wenn man eine Datei anlegt oder löscht die Grösseninformationen in jedem Verzeichnis aufwärts bis zur Wurzel anpassen.

Ausserdem sollte man aufpassen mit dem Begriff "Grösse eines Verzeichnisses" ? das wird sehr wohl gespeichert und man kann es auch abfragen. Diese Grösse gibt an, wieviel Platz die Verzeichniseinträge der direkt enthaltenen Dateien und Unterverzeichnisse belegen. Das ist aber etwas anderes als die Gesamtgrösse der Dateien in allen Unterverzeichnissen.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Mittwoch 16. März 2005, 15:14

...den Python-Weg findet man in der original Python-Doku,
und zwar hier

da ich es selber regelmäßig einsetze, kann ich auch noch was über die Performance sagen: über ein Netzlaufwerk fast genauso schnell wie ein dir /S auf der Kommandozeile. Unter Windows über Eigenschaften die Ordnergröße anzeigen lassen macht auch nichts anderes als durch den/die Ordner laufen und dabei addieren... :o

mfg, querdenker
Antworten