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

3 投票
1 回答
2591 浏览
提问于 2025-04-16 15:16

我在一个运行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

撰写回答