os.path.getsize() 对大文件(大于3GB)返回负值文件大小
我在一个运行Linux 2.6.32的嵌入式设备上使用Python。
我想用Python获取文件大小,但是使用os.path.getsize()
时却返回了一个负值。
我参考了Stack Overflow上一个类似的问题,尝试重新编译Python,使用了CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64' OPT="-g -O2 $CFLAGS"
,但结果还是返回了负的文件大小。
我现在使用的是Python 2.6.4和Django 1.2.4,依然是在Linux 2.6.32上。
有没有人能告诉我问题出在哪里吗?
1 个回答
2
显然,你的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