为什么 Python 找到与 Windows 不同的文件大小?
Why does Python find different file sizes to Windows?
我正在创建一个基本的 GUI 作为一个大学项目。它扫描用户从他们的 PC 中选择的硬盘驱动器,并向他们提供有关它的信息,例如上面的文件数量等...
我的扫描功能的一部分是,对于驱动器上的每个文件,以字节为单位获取所述文件的大小,并将其添加到 运行 总数中。最后,将数字与 Windows 总数进行比较后,我总是发现我的 Python 脚本找到的数据少于 Windows 所说的在驱动器上的数据。
下面是代码...
import os
overall_space_used = 0
def Scan (drive):
global overall_space_used
for path, subdirs, files in os.walk (r"" + drive + "\"):
for file in files:
overall_space_used = overall_space_used + os.path.getsize(os.path.join(path,file))
print (overall_space_used)
在我的一个硬盘上执行时,Python 表示总共有 23,328,445,304 字节的数据 (21.7 GB)。但是,当我进入 Windows 中的驱动器时,它显示有 23,536,922,624 字节的数据 (21.9 GB)。为什么会有这种差异?
我手工计算,并使用 Windows 用于从字节转换为千兆字节 (gibibytes = bytes / 1024**3
) 的相同公式,我仍然少了 .2 GB。为什么 Python 发现的数据较少?
使用 os.path.getsize(...) 您可以获得文件的实际大小。
但是 NTFS、FAT32……文件系统使用集群在其中存储数据,因此它们不会被完全填满。
您可以看到这种差异,当您转到文件的属性时,'size' 和 'size on the disk' 之间存在差异。现在,当您检查磁盘的文件大小时,它会为您提供已用完的簇的大小,而不是加起来的文件的大小。
这里有一些更详细的信息:
Why is There a Big Difference Between ‘Size’ and ‘Size on Disk’?
我正在创建一个基本的 GUI 作为一个大学项目。它扫描用户从他们的 PC 中选择的硬盘驱动器,并向他们提供有关它的信息,例如上面的文件数量等...
我的扫描功能的一部分是,对于驱动器上的每个文件,以字节为单位获取所述文件的大小,并将其添加到 运行 总数中。最后,将数字与 Windows 总数进行比较后,我总是发现我的 Python 脚本找到的数据少于 Windows 所说的在驱动器上的数据。
下面是代码...
import os
overall_space_used = 0
def Scan (drive):
global overall_space_used
for path, subdirs, files in os.walk (r"" + drive + "\"):
for file in files:
overall_space_used = overall_space_used + os.path.getsize(os.path.join(path,file))
print (overall_space_used)
在我的一个硬盘上执行时,Python 表示总共有 23,328,445,304 字节的数据 (21.7 GB)。但是,当我进入 Windows 中的驱动器时,它显示有 23,536,922,624 字节的数据 (21.9 GB)。为什么会有这种差异?
我手工计算,并使用 Windows 用于从字节转换为千兆字节 (gibibytes = bytes / 1024**3
) 的相同公式,我仍然少了 .2 GB。为什么 Python 发现的数据较少?
使用 os.path.getsize(...) 您可以获得文件的实际大小。 但是 NTFS、FAT32……文件系统使用集群在其中存储数据,因此它们不会被完全填满。
您可以看到这种差异,当您转到文件的属性时,'size' 和 'size on the disk' 之间存在差异。现在,当您检查磁盘的文件大小时,它会为您提供已用完的簇的大小,而不是加起来的文件的大小。
这里有一些更详细的信息: Why is There a Big Difference Between ‘Size’ and ‘Size on Disk’?