web-dev-qa-db-ja.com

OS / Xのpython)で空きディスク容量を見つけます

HDで空きバイト数を探していますが、Pythonでは問題があります。

私は以下を試しました:

import os

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

しかし、OS/Xでは、17529020874752バイトが得られます。これは約1.6 TBであり、非常に優れていますが、残念ながら実際にはそうではありません。

この数字に到達するための最良の方法は何ですか?

25
Evert

f_frsizeの代わりに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%    /
38
Nicholas Riley

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)

使用法:

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

Windowsの場合は、 psutil を使用できます。

19

python 3.3以降では、shutilは同じ機能を提供します

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

Psutilモジュール も使用できます。

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

ドキュメントが見つかります ここ

4
Serge
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
0
imp