標準ライブラリを使用してPython2.6を介してWindows(Samba)共有で使用可能な容量を取得する方法を知っている人はいますか?(Windowsでも実行中)
例えば
>>> os.free_space("\\myshare\folder") # return free disk space, in bytes
1234567890
PyWin32が利用可能な場合:
free, total, totalfree = win32file.GetDiskFreeSpaceEx(r'\\server\share')
freeは現在のユーザーが使用できる空き容量で、totalfreeは空き容量の合計です。関連ドキュメント: PyWin32 docs、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にあまり慣れていません。
標準ライブラリには os.statvfs() 関数がありますが、残念ながら Unix ライクなプラットフォームでしか利用できません。
いくつかの cygwin-python がある場合、おそらくそこで動作するでしょうか?