2

標準ライブラリを使用してPython2.6を介してWindows(Samba)共有で使用可能な容量を取得する方法を知っている人はいますか?(Windowsでも実行中)

例えば

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

2 に答える 2

8

PyWin32が利用可能な場合:

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

freeは現在のユーザーが使用できる空き容量で、totalfreeは空き容量の合計です。関連ドキュメント: PyWin32 docsMSDN

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にあまり慣れていません。

于 2010-06-04T14:04:02.273 に答える
0

標準ライブラリには os.statvfs() 関数がありますが、残念ながら Unix ライクなプラットフォームでしか利用できません。

いくつかの cygwin-python がある場合、おそらくそこで動作するでしょうか?

于 2010-06-04T11:35:35.700 に答える