在Python中获取文件大小?

696*_*8-1 433 python size file

是否有内置函数来获取文件对象的大小(以字节为单位)?我看到有些人这样做:

def getSize(fileobject):
    fileobject.seek(0,2) # move the cursor to the end of the file
    size = fileobject.tell()
    return size

file = open('myfile.bin', 'rb')
print getSize(file)
Run Code Online (Sandbox Code Playgroud)

但根据我使用Python的经验,它有很多辅助函数,所以我猜可能有一个内置函数.

Art*_*nka 589

试着看看http://docs.python.org/library/os.path.html#os.path.getsize

os.path.getsize(path)返回路径的大小(以字节为单位).如果文件不存在或无法访问,则引发os.error.

import os
os.path.getsize('C:\\Python27\\Lib\\genericpath.py')
Run Code Online (Sandbox Code Playgroud)

要么

os.stat('C:\\Python27\\Lib\\genericpath.py').st_size 
Run Code Online (Sandbox Code Playgroud)

  • @ 16num这是合乎逻辑的,因为`os.path.getsize()`除了调用`os.stat().st_size`之外别无其他. (7认同)
  • 我在给定目录中的所有文件上都使用了%timeit来运行,发现os.stat略快(〜6%)。 (2认同)

K M*_*hta 179

os.path.getsize(path)
Run Code Online (Sandbox Code Playgroud)

返回路径的大小(以字节为单位).如果文件不存在或无法访问,则引发os.error.

  • 正如好奇的人的注释一样, getsize() 在幕后执行 os.stat(path).st_size ,这是此处解释的另一种方法。 (2认同)

Zel*_*luX 83

你可以使用os.stat()函数,它是系统调用的包装器stat():

import os

def getSize(filename):
    st = os.stat(filename)
    return st.st_size
Run Code Online (Sandbox Code Playgroud)

  • 不,它以字节为单位。 (2认同)

raj*_*aur 22

尝试

os.path.getsize(filename)
Run Code Online (Sandbox Code Playgroud)

它应返回由os.stat()报告的文件大小.


Iva*_*nGL 13

你可以使用os.stat(path)电话

http://docs.python.org/library/os.html#os.stat