os.path.getsize()返回大文件的负文件大小(对于大于3GB的文件大小)

我在运行linux 2.6.32的embedded式设备上使用python

使用python获取文件大小为os.path.getsize()返回一个负值。

我提到了堆栈溢出的类似问题之一,并尝试使用CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS"重新编译python,但它仍返回负文件大小。

我在Linux 2.6.32上使用Python 2.6.4和Django 1.2.4。

有谁能告诉我问题在哪里?

显然,您的Linux发行版的Python构建有些问题。 而不是解决实际问题,只是解决它可能更容易:

 def getsize_workaround( filename ): size = os.path.getsize( filename ) if size < 0: import subprocess as s size = long( s.Popen("ls -l %s | cut -d ' ' -f5" % filename, shell=True, stdout=s.PIPE).communicate()[0] ) return size