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

时间:2011-04-07 10:11:02

标签: python linux

我在运行linux 2.6.32的嵌入式设备上使用python。

使用python将文件大小提取为os.path.getsize()会返回负值。

我参考了堆栈溢出中的similar questions之一并尝试使用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。

任何人都可以告诉我问题在哪里吗?

1 个答案:

答案 0 :(得分: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