Size of an open file object Size of an open file object python python

Size of an open file object


$ ls -la chardet-1.0.1.tgz-rwxr-xr-x 1 vinko vinko 179218 2008-10-20 17:49 chardet-1.0.1.tgz$ pythonPython 2.5.1 (r251:54863, Jul 31 2008, 22:53:39)[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> f = open('chardet-1.0.1.tgz','rb')>>> f.seek(0,2)>>> f.tell()179218L

Adding ChrisJY's idea to the example

>>> import os>>> os.fstat(f.fileno()).st_size179218L>>>        

Note: Based on the comments, f.seek(0, 2) is must before calling f.tell(), without which it would return a size of 0. The reason is that f.seek(0, 2) moves the file object's position to the end of the file.


Well, if the file object support the tell method, you can do:

current_size = f.tell()

That will tell you were it is currently writing. If you write in a sequential way this will be the size of the file.

Otherwise, you can use the file system capabilities, i.e. os.fstat as suggested by others.


If you have the file descriptor, you can use fstat to find out the size, if any. A more generic solution is to seek to the end of the file, and read its location there.