我确实有三种方法来确定文件大小:
那么确定文件大小的实际正确方式是什么?什么是最糟糕的方式? 或者甚至不重要,因为最后它们都是一样的?
(我可以想象第一种方法对于非常大的文件有问题,而另外两种方法没有)
答案 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更新的答案。