Espace disque disponible sur un partage SMB, via Python

Est-ce que quelqu’un connaît un moyen d’obtenir la quantité d’espace disponible sur un partage Windows (Samba) via Python 2.6 avec sa bibliothèque standard? (également sous Windows)

par exemple

>>> os.free_space("\\myshare\folder") # return free disk space, in bytes 1234567890 

Si PyWin32 est disponible:

 free, total, totalfree = win32file.GetDiskFreeSpaceEx(r'\\server\share') 

libre est une quantité d’espace libre disponible pour l’utilisateur actuel, et totalfree est la quantité totale d’espace libre. Documentation pertinente: docs PyWin32 , MSDN .

Si PyWin32 n’est pas garanti pour être disponible, alors pour Python 2.5 et les versions ultérieures, il existe un module ctypes dans stdlib. Même fonction, en utilisant 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 

Pourrait probablement être mieux fait mais je ne suis pas vraiment familier avec les types.

La bibliothèque standard a la fonction os.statvfs (), mais malheureusement elle n’est disponible que sur les plates-formes de type Unix.

Au cas où il y aurait du cygwin-python, ça fonctionnerait peut-être là?