获取文件大小的最佳方法是什么?

时间:2012-03-19 19:16:25

标签: python filesize

我确实有三种方法来确定文件大小:

  1. 打开并阅读它,并使用len()
  2. 获取字符串的大小
  3. 使用os.stat并通过st_size获取 - >什么应该是“正确的”方式,因为它由底层的os处理
  4. os.path.getsize应该与上面的内容相同
  5. 那么确定文件大小的实际正确方式是什么?什么是最糟糕的方式? 或者甚至不重要,因为最后它们都是一样的?

    (我可以想象第一种方法对于非常大的文件有问题,而另外两种方法没有)

3 个答案:

答案 0 :(得分:5)

如果您不需要文件的内容,第一种方法将是浪费。您的其他两个选项都可以。 os.path.getsize()使用os.stat()

来自genericpath.py

def getsize(filename):
    """Return the size of a file, reported by os.stat()."""
    return os.stat(filename).st_size

编辑:

如果不明显,os.path.getsize()来自genericpath.py。

>>> os.path.getsize.__code__
<code object getsize at 0x1d457b0, file "/usr/lib/python2.7/genericpath.py", line 47>

答案 1 :(得分:3)

没有。 1绝对是最差的。如果有的话,最好是寻求()和告诉(),但这不如其他两个好。

没有。 2,没有。 3同样可以IMO。我想不是。 3读起来有点清楚,但这可以忽略不计。

答案 2 :(得分:2)

方法1是最慢的方法。除非您稍后需要将文件的全部内容作为字符串使用,否则不要使用它。

方法2和3是最快的,因为它们甚至不必打开文件。

使用f.seek(os.SEEK_END)f.tell()需要打开文件,并且可能比2&3慢一点,除非你打算打开文件。

当没有其他程序写入文件时,所有方法都会给出相同的结果。如果文件在代码运行时处于修改过程中,那么seek + tell有时可以为您提供比2&3更新的答案。