我正在使用函数os.path.getsize()
给出文件的大小以字节为单位。
因为我的一个文件大小是10GB,它给我的负面(字节)大小。
所以任何人都可以告诉我为什么会发生这种情况?
这是我的代码:
import os ospathsize = os.path.getsize('/home/user/Desktop/test1.nrg') print (ospathsize)
你的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; 该修补程序可能是一个小版本了。