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

问题描述 投票:0回答:3

实际上我想到了三种方法来确定文件大小:

  1. 打开并读取它,并使用len()获取字符串的大小
  2. 使用 os.stat 并通过 st_size 获取它 -> 什么应该是“正确”的方式,因为它是由底层操作系统处理的
  3. os.path.getsize应该与上面相同

那么确定文件大小的实际正确方法是什么?最糟糕的方法是什么? 或者这根本不重要,因为到最后都是一样的?

(我可以想象第一种方法在处理非常大的文件时会出现问题,而其他两种方法则没有。)

python filesize
3个回答
6
投票

如果您根本不需要文件的内容,第一种方法将是一种浪费。您的其他两个选择都可以。

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>

4
投票

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

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

使用

f.seek(os.SEEK_END)
f.tell()
需要打开文件,并且可能比 2 和 3 慢一点,除非您无论如何都要打开文件。

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


3
投票

不。 1肯定是最差的。如果有的话,最好是eek()和tell(),但这不如其他两个。

不。 2 和没有。在我看来,3个同样没问题。我想不是。 3 读起来更清晰一些,但这可以忽略不计。

© www.soinside.com 2019 - 2024. All rights reserved.