0

我不明白为什么,也许我错过了什么?

当我对我的 Android 设备上的文件执行 os.path.getsize 时,我得到以下回报:

394 005 664

但文件实际上是 4 688 972 960 字节,为什么呢?

编辑:我的 Android 系统不支持大文件?这可以改变吗?如果我在文件上运行 ls -lh,我得到 375.8M。所以说 Python 没什么好说的。正如我在下面的答案中评论的那样,它适用于小文件。

编辑:如果我运行 ls -lsh 我得到 4579076,那占用的空间是 kb 吗?

编辑: stat -c %s 给我 4688972960,这是正确的。但是在 Python 中 os.stat('path').st_size 给了我 394005664

编辑:我现在全力以赴进行测试:)

f = open("filepath")
old_file_position = f.tell()
f.seek(0, os.SEEK_END)
size = f.tell()
f.seek(old_file_position, os.SEEK_SET)

也给了我 394005664

4

2 回答 2

0

这通常只在使用目录时发生。当您的路径指定的文件是单个文件时,它应该可以正常工作,但如果该文件是带有子文件夹的文件夹,它将不再按预期运行。Python 将目录的大小视为磁盘上目录描述的大小,而不是目录内容。

还有其他线程可以解决这个问题:Calculating a directory size using Python?

于 2014-04-17T10:23:31.373 回答
0

看起来 os.path.getsize 只返回 32 位宽的无符号答案,因此不会返回大于 4 GB 的答案,其中 GB = 1024 * 1024 * 1024(不是磁盘驱动器制造商的定义),因为:

4 688 972 960 % (2 ^ 32) = 394 005 664

于 2015-01-31T15:15:57.857 回答