Seite 2 von 2
Verfasst: Donnerstag 3. März 2005, 08:14
von jens
Zu dumm... Wenn auf dem Laufwerk keine Dateien existieren bzw. alle vorhanden versteckt sind, dann funktioniert das parsen der dir-Ausgabe nicht, weil in der Ausgabe nicht angezeigt wird, wieviel Bytes frei sind
Behelfen kann man sich damit, das auf NTFS-Laufwerke zumindest das versteckte "System Volume Information" Verzeichnis existiert... Somit funktioniert es wieder mit "dir c:\ /ah" (/ah = Versteckte Einträge anzeigen)...
"""alte Version gelöscht, s.u."""
Wie bekomme ich eigentlich unter Linux den freien Platz raus? Irgendwie über
stat ??? Oder gibt es dafür auch keine eingebaute Funktion?
Verfasst: Donnerstag 3. März 2005, 13:49
von Leonidas
jens hat geschrieben:Wie bekomme ich eigentlich unter Linux den freien Platz raus? Irgendwie über stat ??? Oder gibt es dafür auch keine eingebaute Funktion?
Jup, doch das gibt es:
Code: Alles auswählen
import os, statvfs
fsstat = os.statvfs('/')
blocks_free = fsstat[statvfs.F_BAVAIL]
block_size = fsstat[statvfs.F_BSIZE]
free = block_size * blocks_free
print 'MB auf / frei:', free/1024/1024
Verfasst: Donnerstag 3. März 2005, 15:22
von jens
Thx! Hab es angepasst:
Code: Alles auswählen
def getFreeSpace( Drive ):
"Liefert den freien Speicherplatz in Bytes eines Laufwerks/mountpoints zurück"
if sys.platform == "win32":
# Benutze DIR-Ausgabe um freinen Speicherplatz zu ermitteln
## Wenn auf dem Laufwerk keine Dateien existieren bzw. alle vorhanden versteckt
## sind, dann funktioniert das parsen der dir-Ausgabe nicht, weil in der Ausgabe
## nicht angezeigt wird, wieviel Bytes frei sind.
txt = os.popen( 'dir %s\\ /ah' % Drive ).readlines()
txt = txt[-1]
txt = txt.split(",")[1]
txt = txt.split("Bytes")[0]
txt = "".join( txt.split(".") )
return int( txt )
elif sys.platform == "posix":
# Unter Linux ist alles einfacher ;)
import statvfs
fsstat = os.statvfs( Drive )
blocks_free = fsstat[statvfs.F_BAVAIL]
block_size = fsstat[statvfs.F_BSIZE]
return blocks_free * block_size
raise "Platform not supported ;("
Verfasst: Freitag 4. März 2005, 00:59
von BlackJack
Dein Windows-Anteil funktioniert aber nur unter einem deutschen Windows, oder zumindest eines, wo in der entsprechenden Zeile "Bytes" gross geschrieben wird und Tausender mit '.' getrennt werden. Bei einem eglischen ``dir`` sieht die letzte Zeile zum Beispiel so aus: