android上的os.path.getsize返回错误的值

时间:2014-04-17 10:03:28

标签: android python os.path

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

当我在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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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