1. 程式人生 > >[Python] Find free disk space

[Python] Find free disk space

If you need the device name and mount point associated with the file, you should call an external program to get this information. df will provide all the information you need — when called as df filename it prints a line about the partition that contains the file.

To give an example:

import subprocess
df 
= subprocess.Popen(["df", "filename"], stdout=subprocess.PIPE) output = df.communicate()[0] device, size, used, available, percent, mountpoint = \ output.split("\n")[1].split()

If you don’t need device name and mount point, going with os.statvfs() will be better (see other answers).

Try using f_frsize

instead of 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%    /

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)

Usage:

>>> disk_usage('/')
usage(total=21378641920, used=7650934784, free=12641718272)
>>>
A cross-platform process and system utilities module for Python