为什么os.path.getsize()为10gb文件返回负数?

Dip*_*pen 7 python linux file-io

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

由于我的一个文件大小是10gb,它给我的大小为负(字节).

那么有谁能让我知道为什么会这样?

这是我的代码:

import os
ospathsize = os.path.getsize('/home/user/Desktop/test1.nrg')
print (ospathsize) 
Run Code Online (Sandbox Code Playgroud)

Sve*_*ach 10

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

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

CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS" \
    ./configure
Run Code Online (Sandbox Code Playgroud)

最后,引用系统调用手册页stat:

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

(我相信最后一个字应该是"字节".)