Getting file size in Python?

The Question :

544 people think this question is useful

Is there a built-in function for getting the size of a file object in bytes? I see some people do something like this:

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)

But from my experience with Python, it has a lot of helper functions so I’m guessing maybe there is one built-in.

The Question Comments :
  • Path('./doc.txt').stat().st_size

The Answer 1

761 people think this answer is useful

Use os.path.getsize(path) which will

Return the size, in bytes, of path. Raise OSError if the file does not exist or is inaccessible.

import os
os.path.getsize('C:\\Python27\\Lib\\genericpath.py')

Or use os.stat(path).st_size

import os
os.stat('C:\\Python27\\Lib\\genericpath.py').st_size 

Or use Path(path).stat().st_size (Python 3.4+)

from pathlib import Path
Path('C:\\Python27\\Lib\\genericpath.py').stat().st_size

The Answer 2

219 people think this answer is useful
os.path.getsize(path)

Return the size, in bytes, of path. Raise os.error if the file does not exist or is inaccessible.

The Answer 3

94 people think this answer is useful

You may use os.stat() function, which is a wrapper of system call stat():

import os

def getSize(filename):
    st = os.stat(filename)
    return st.st_size

The Answer 4

25 people think this answer is useful

Try

os.path.getsize(filename)

It should return the size of a file, reported by os.stat().

The Answer 5

14 people think this answer is useful

You can use os.stat(path) call

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

Add a Comment