为什么os.path.getsize()返回一个10GB文件的负数?

我正在使用函数os.path.getsize()给出文件的大小以字节为单位。

因为我的一个文件大小是10GB,它给我的负面(字节)大小。

所以任何人都可以告诉我为什么会发生这种情况?

这是我的代码:

 import os ospathsize = os.path.getsize('/home/user/Desktop/test1.nrg') print (ospathsize) 

Solutions Collecting From Web of "为什么os.path.getsize()返回一个10GB文件的负数?"

你的Linux内核显然有很大的文件支持,因为ls -l工作正常。 因此,这是你的Python安装缺乏支持。 (你使用你的发行版的Python包吗?它是什么发行版?)

Python中的POSIX大文件支持文档指出,如果Python在Linux上可用,通常应该使用大文件支持。 它还建议尝试使用命令行配置Python

 CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \ ./configure 

最后,引用stat系统调用的man page :

当在没有-D_FILE_OFFSET_BITS=64的32位平台上编译的应用程序在大小超过(1<<31)-1位的文件上调用stat()时,可能会发生这种情况。

(我相信最后一个字应该是“字节”。)

看起来像32位int的溢出,用于限制为4GB的大小。 这可能是你特定版本的Python中的一个bug(甚至是一个缺少的编译标志)。 我只是在一个32位的Linux机器上使用Python 2.4和2.6; 对大于4GB的文件都给出正确的结果。

尝试升级你的Python; 该修补程序可能是一个小版本了。