Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 为什么Python会在Windows中找到不同的文件大小?_Python 3.x_File_Filesize - Fatal编程技术网

Python 3.x 为什么Python会在Windows中找到不同的文件大小?

Python 3.x 为什么Python会在Windows中找到不同的文件大小?,python-3.x,file,filesize,Python 3.x,File,Filesize,我正在创建一个基本的GUI作为一个大学项目。它会扫描用户从电脑中选择的硬盘,并向用户提供相关信息,如硬盘上的文件数等 我的扫描功能的一部分是,对于驱动器上的每个文件,以字节为单位计算所述文件的大小,并将其添加到运行总数中。最后,在将这个数字与Windows总数进行比较之后,我总是发现我的Python脚本找到的数据少于Windows所说的驱动器上的数据 下面是代码 import os overall_space_used = 0 def Scan (drive): global ove

我正在创建一个基本的GUI作为一个大学项目。它会扫描用户从电脑中选择的硬盘,并向用户提供相关信息,如硬盘上的文件数等

我的扫描功能的一部分是,对于驱动器上的每个文件,以字节为单位计算所述文件的大小,并将其添加到运行总数中。最后,在将这个数字与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)
在my HDD上执行此操作时,Python表示总共有23328445304字节的数据(21.7GB)。然而,当我进入Windows中的驱动器时,它显示有23536922624字节的数据(21.9 GB)。为什么会有这种差异

我手工计算,使用Windows用来从字节转换为千兆字节的相同公式(
gibibytes=bytes/1024**3
),我仍然到达了。短了2 GB。为什么Python发现的数据更少

使用os.path.getsize(…)可以获得文件的实际大小。 但是NTFS,FAT32,。。。文件系统使用集群来存储数据,所以它们并没有被完全填满

您可以看到这种差异,当您转到文件的属性时,“大小”和“磁盘大小”之间存在差异。现在,当您检查磁盘的文件大小时,它会给出已用集群的大小,而不是添加的文件的大小

以下是一些更详细的信息:

有没有办法从python中同时获取“大小”和“磁盘大小”?