SMB共享上的可用磁盘空间,通过Python

时间:2010-06-04 11:03:22

标签: python windows samba

有没有人知道如何通过Python 2.6及其标准库获取Windows(Samba)共享上的可用空间量? (也在Windows上运行)

e.g。

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

2 个答案:

答案 0 :(得分:8)

如果PyWin32可用:

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

其中 free 是当前用户可用的可用空间量, totalfree 是可用空间总量。相关文档:PyWin32 docsMSDN

如果不保证PyWin32可用,那么对于Python 2.5及更高版本,stdlib中有ctypes module。相同的功能,使用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。

答案 1 :(得分:0)

标准库具有os.statvfs()函数,但不幸的是它只能在类Unix平台上使用。

如果有一些cygwin-python可能会在那里工作?