Если доступно PyWin32 :
free, total, totalfree = win32file.GetDiskFreeSpaceEx(r'\\server\share')
Где free - количество свободного места, доступное текущему пользователю, а totalfree - общее количество свободного пространства. Соответствующая документация: Документы PyWin32 , MSDN .
Если PyWin32 не гарантированно будет доступен, то для Python 2.5 и выше в stdlib есть модуль ctypes . Та же функция, используя ctypes:
import sys
from ctypes import *
c_ulonglong_p = POINTER(c_ulonglong)
_GetDiskFreeSpace = windll.kernel32.GetDiskFreeSpaceExW
_GetDiskFreeSpace.argtypes = [c_wchar_p, c_ulonglong_p, c_ulonglong_p, c_ulonglong_p]
def GetDiskFreeSpace(path):
if not isinstance(path, unicode):
path = path.decode('mbcs') # this is windows only code
free, total, totalfree = c_ulonglong(0), c_ulonglong(0), c_ulonglong(0)
if not _GetDiskFreeSpace(path, pointer(free), pointer(total), pointer(totalfree)):
raise WindowsError
return free.value, total.value, totalfree.value
Возможно, это можно сделать лучше, но я не очень разбираюсь в ctypes.