www org descargar python diskspace

descargar - python org download 2.7 15



Encuentre espacio libre en el disco en Python en OS/X (7)

Estoy buscando el número de bytes libres en mi HD, pero tengo problemas para hacerlo en python.

He intentado lo siguiente:

import os stat = os.statvfs(path) print stat.f_bsize * stat.f_bavail

Pero, en OS / X, me da un 17529020874752 bytes, que es aproximadamente de 1.6 TB, lo que sería muy bueno, pero desafortunadamente no es realmente cierto.

¿Cuál es la mejor manera de llegar a esta figura?


En Python 3.3 y superior, shutil te ofrece la misma característica.

>>> import shutil >>> shutil.disk_usage("/") usage(total=488008343552, used=202575314944, free=260620050432) >>>


En UNIX:

import os from collections import namedtuple _ntuple_diskusage = namedtuple(''usage'', ''total used free'') def disk_usage(path): """Return disk usage statistics about the given path. Returned valus is a named tuple with attributes ''total'', ''used'' and ''free'', which are the amount of total, used and free space, in bytes. """ st = os.statvfs(path) free = st.f_bavail * st.f_frsize total = st.f_blocks * st.f_frsize used = (st.f_blocks - st.f_bfree) * st.f_frsize return _ntuple_diskusage(total, used, free)

Uso:

>>> disk_usage(''/'') usage(total=21378641920, used=7650934784, free=12641718272) >>>

Para Windows puedes usar psutil .


Intente usar f_frsize lugar de f_bsize .

>>> s = os.statvfs(''/'') >>> (s.f_bavail * s.f_frsize) / 1024 23836592L >>> os.system(''df -k /'') Filesystem 1024-blocks Used Available Capacity Mounted on /dev/disk0s2 116884912 92792320 23836592 80% /


No es independiente del sistema operativo, pero esto funciona en Linux, y probablemente también en OS X:

print commands.getoutput (''df.''). split (''/ n'') [1] .split () [3]

¿Como funciona? Obtiene la salida del ''df''. comando, que le proporciona información de disco sobre la partición de la que forma parte el directorio actual, la divide en dos líneas (tal como se imprime en la pantalla), luego toma la segunda línea de esa (agregando [1] después de primero divide (), luego divide esa línea en diferentes partes separadas por espacios en blanco y, finalmente, te da el cuarto elemento en esa lista.

>>> commands.getoutput(''df .'') ''Filesystem 1K-blocks Used Available Use% Mounted on/n/dev/sda3 80416836 61324872 15039168 81% /'' >>> commands.getoutput(''df .'').split(''/n'') [''Filesystem 1K-blocks Used Available Use% Mounted on'', ''/dev/sda3 80416836 61324908 15039132 81% /''] >>> commands.getoutput(''df .'').split(''/n'')[1] ''/dev/sda3 80416836 61324908 15039132 81% /'' >>> commands.getoutput(''df .'').split(''/n'')[1].split() [''/dev/sda3'', ''80416836'', ''61324912'', ''15039128'', ''81%'', ''/''] >>> commands.getoutput(''df .'').split(''/n'')[1].split()[3] ''15039128'' >>> print commands.getoutput(''df .'').split(''/n'')[1].split()[3] 15039128


Qué hay de malo en

import subprocess proc= subprocess.Popen( "df", stdout=subprocess.PIPE ) proc.stdout.read() proc.wait()


También se puede utilizar el psutil .

>>> psutil.disk_usage(''/'') usage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)

La documentación se puede encontrar here .


def FreeSpace(drive): """ Return the FreeSape of a shared drive in bytes""" try: fso = com.Dispatch("Scripting.FileSystemObject") drv = fso.GetDrive(drive) return drv.FreeSpace except: return 0