function f($n){return array_reduce(range(1,$n),'bcmul',1);}
<час> array_product(range(1,$n));
Если вы не хотите добавлять другую зависимость, вы можете для Windows использовать ctypes для прямого вызова функции win32.
import ctypes
free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(u'c:\\'), None, None, ctypes.pointer(free_bytes))
if free_bytes.value == 0:
print 'dont panic'
import ctypes
import os
import platform
import sys
def get_free_space_mb(dirname):
"""Return folder/drive free space (in megabytes)."""
if platform.system() == 'Windows':
free_bytes = ctypes.c_ulonglong(0)
ctypes.windll.kernel32.GetDiskFreeSpaceExW(ctypes.c_wchar_p(dirname), None, None, ctypes.pointer(free_bytes))
return free_bytes.value / 1024 / 1024
else:
st = os.statvfs(dirname)
return st.f_bavail * st.f_frsize / 1024 / 1024
Обратите внимание, что вы должны передать имя каталога, чтобы GetDiskFreeSpaceEx()
сработала
(statvfs()
работает как с файлами, так и с каталогами). Вы можете получить имя каталога
из файла с помощью os.path.dirname()
.
Также смотрите документацию для os.statvfs()
и GetDiskFreeSpaceEx
.