gpt4 book ai didi

python - 在 Python 中确定文件系统的簇大小

转载 作者:太空狗 更新时间:2023-10-29 21:47:55 24 4
gpt4 key购买 nike

我想用 Python 计算文件的“磁盘大小”。因此,我想确定存储文件的文件系统的簇大小。

如何确定 Python 中的簇大小?或者另一种计算“磁盘大小”的内置方法也可以使用。

我看了os.path.getsize但它以字节为单位返回文件大小,不考虑 FS 的 block 大小。

我希望这可以以独立于操作系统的方式完成...

最佳答案

在 UNIX/Linux 平台上,使用 Python 的内置 os.statvfs .在 Windows 上,除非您能找到执行此操作的第三方库,否则您将需要使用 ctypes 来调用 Win32 函数 GetDiskFreeSpace ,像这样:

import ctypes

sectorsPerCluster = ctypes.c_ulonglong(0)
bytesPerSector = ctypes.c_ulonglong(0)
rootPathName = ctypes.c_wchar_p(u"C:\\")

ctypes.windll.kernel32.GetDiskFreeSpaceW(rootPathName,
ctypes.pointer(sectorsPerCluster),
ctypes.pointer(bytesPerSector),
None,
None,
)

print(sectorsPerCluster.value, bytesPerSector.value)

请注意,ctypes 仅在 2.5 或 2.6(不记得是哪个)中成为 Python stdlib 的一部分。

我将这类事情放在一个函数中,该函数首先检查是否存在 UNIX 变体,如果不存在(大概是因为它在 Windows 上运行)则回退到 ctypes。这样,如果 Python 在 Windows 上实现了 statvfs,它只会使用它。

关于python - 在 Python 中确定文件系统的簇大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2493172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com