¿Por qué os.path.getsize () devuelve un número negativo para un archivo de 10 gb?

Estoy usando la función os.path.getsize() que da el tamaño del archivo en bytes.

Como mi tamaño de archivo es de 10 gb, me da un tamaño negativo (bytes).

¿Alguien puede darme alguna idea de por qué sucede esto?

Este es mi código:

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

Su kernel de Linux obviamente tiene soporte para archivos grandes, ya que ls -l funciona correctamente. Por lo tanto, es tu instalación de Python la que carece de soporte. (¿Está utilizando el paquete Python de su distribución? ¿Qué distribución es?)

La documentación sobre el soporte de archivos grandes POSIX en Python establece que Python debería utilizar el soporte de archivos grandes si está disponible en Linux. También sugiere probar y configurar Python con la línea de comandos.

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

Y finalmente, citando la página del manual de la llamada del sistema de stat :

Esto puede ocurrir cuando una aplicación comstackda en una plataforma de 32 bits sin -D_FILE_OFFSET_BITS=64 llama a stat() en un archivo cuyo tamaño excede (1<<31)-1 bits.

(Creo que la última palabra debería ser "bytes".)

Parece un desbordamiento de int de 32 bits utilizado para el tamaño que se limita a 4 GB. Esto puede ser un error (o incluso un indicador de comstackción faltante) en su versión particular de Python. Lo probé en una caja de Linux de 32 bits, usando Python 2.4 y 2.6; Ambos dan resultados correctos en archivos de más de 4GB.

Intenta actualizar tu Python; la solución es probablemente una versión menor de distancia.