def get_free_space(path): if not os.path.exists(path): return -1 if sys.platform == 'win32': from win32file import GetDiskFreeSpaceEx return GetDiskFreeSpaceEx(os.path.splitdrive(os.path.abspath(path))[0])[0] else: data = os.statvfs(path.encode("utf-8")) return data.f_bavail * data.f_frsize
def free_space(path): """ Gets the free space available at 'path' :param path: the path to check :type path: string :returns: the free space at path in bytes :rtype: int :raises InvalidPathError: if the path is not valid """ if not os.path.exists(path): raise InvalidPathError("%s is not a valid path" % path) if windows_check(): from win32file import GetDiskFreeSpaceEx return GetDiskFreeSpaceEx(path)[0] else: disk_data = os.statvfs(path.encode("utf8")) block_size = disk_data.f_frsize return disk_data.f_bavail * block_size