<div class="gmail_quote">On Sat, Jun 11, 2011 at 13:51, Giampaolo Rodolą <span dir="ltr"><<a href="mailto:g.rodola@gmail.com">g.rodola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all,<br>
I've just implemented this functionality in psutil for both POSIX and<br>
Windows and thought it might be nice to have it in shutil module as<br>
well since it's useful when doing system monitoring:<br>
<a href="http://code.google.com/p/psutil/issues/detail?id=172" target="_blank">http://code.google.com/p/psutil/issues/detail?id=172</a><br>
<br>
The posix implementation is nothing but a wrapper around os.statvfs():<br>
<br>
def disk_usage(path):<br>
    """Return disk usage associated with path."""<br>
    st = os.statvfs(path)<br>
    free = (st.f_bavail * st.f_frsize)<br>
    total = (st.f_blocks * st.f_frsize)<br>
    used = (st.f_blocks - st.f_bfree) * st.f_frsize<br>
    percent = (float(used) / total) * 100<br>
    # NB: the percentage is -5% than what shown by df due to<br>
    # reserved blocks that we are currently not considering:<br>
    # <a href="http://goo.gl/sWGbH" target="_blank">http://goo.gl/sWGbH</a><br>
    return ntuple_diskinfo(total, used, free, round(percent, 1))<br>
<br>
...and reflects what returned by "df /somepath".<br>
The Windows implementation requires GetDiskFreeSpaceEx() which is not<br>
exposed in python stdlib but can be added as a privade module<br>
(Modules/_winutil.c maybe?) or retrieved via ctypes.</blockquote><div><br></div><div>The GetDiskFreeSpaceEx call should just be exposed within Modules/posixmodule.c. See the posix__getfinalpathname function for an example.</div>
</div>