我正在使用函数os.path.getsize()
,它以字节为单位给出文件的大小。
由于我的一个文件大小为10gb,因此我给出了负数(字节)的大小。
所以有人可以告诉我为什么会这样吗?
这是我的代码:
import os
ospathsize = os.path.getsize('/home/user/Desktop/test1.nrg')
print (ospathsize)
答案 0 :(得分:10)
您的Linux内核显然具有大量文件支持,因为ls -l
正常工作。因此,您的Python安装缺乏支持。 (您使用的是您的发行版的Python包吗?它的分布是什么?)
POSIX large file support in Python上的文档指出,如果在Linux上可用,Python通常应该使用大文件支持。它还建议尝试使用命令行
配置PythonCFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
./configure
最后,引用man page of the stat
system call:
如果应用程序在32位平台上编译而没有
-D_FILE_OFFSET_BITS=64
在大小超过stat()
位的文件上调用(1<<31)-1
,则会发生这种情况。
(我相信最后一个字应该是“字节”。)
答案 1 :(得分:1)
看起来像32位int的溢出用于大小,限制为4GB。这可能是您特定版本的Python中的错误(甚至缺少编译标记)。我只是在一个32位的Linux机器中使用python 2.4和2.6进行了尝试;两者都对大于4GB的文件给出正确的结果。
尝试升级Python;修复可能是一个小版本。