Python open file size

How do I check file size in Python?

So is there a minute performance loss from using os.path.getsize as opposed to os.stat(file).st_size?

@wordsforthewise this is more of an issue if you also want to get other things about the file (modification time, type of file, e.g.) — then you might as well get it all from a single system call via os.stat . Then the difference could run into a substantial number of microseconds 🙂

You need the st_size property of the object returned by os.stat . You can get it by either using pathlib (Python 3.4+):

>>> from pathlib import Path >>> Path('somefile.txt').stat() os.stat_result(st_mode=33188, st_ino=6419862, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1564, st_atime=1584299303, st_mtime=1584299400, st_ctime=1584299400) >>> Path('somefile.txt').stat().st_size 1564 
>>> import os >>> os.stat('somefile.txt') os.stat_result(st_mode=33188, st_ino=6419862, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1564, st_atime=1584299303, st_mtime=1584299400, st_ctime=1584299400) >>> os.stat('somefile.txt').st_size 1564 

@josch — yes, this is nice, for the «size on disk» you can multiply stat_result.st_blocks by the block size, but I’m still searching how to get it programmatically and cross-platform (not via tune2fs etc.)

@TomaszGandor now st_blocks is defined as «Number of 512-byte blocks allocated for file», so you don’t have to get the block size.

Читайте также:  Http elearning sygroup ru view doc html

The other answers work for real files, but if you need something that works for «file-like objects», try this:

# f is a file-like object. f.seek(0, os.SEEK_END) size = f.tell() 

It works for real files and StringIO’s, in my limited testing. (Python 2.7.3.) The «file-like object» API isn’t really a rigorous interface, of course, but the API documentation suggests that file-like objects should support seek() and tell() .

Another difference between this and os.stat() is that you can stat() a file even if you don’t have permission to read it. Obviously the seek/tell approach won’t work unless you have read permission.

At Jonathon’s suggestion, here’s a paranoid version. (The version above leaves the file pointer at the end of the file, so if you were to try to read from the file, you’d get zero bytes back!)

# f is a file-like object. old_file_position = f.tell() f.seek(0, os.SEEK_END) size = f.tell() f.seek(old_file_position, os.SEEK_SET) 

Источник

Python Check File Size

In this tutorial, you’ll learn how to get file size in Python.

Whenever we work with files, sometimes we need to check file size before performing any operation. For example, if you are trying to copy content from one file into another file. In this case, we can check if the file size is greater than 0 before performing the file copying operation.

In this article, We will use the following three methods of an OS and pathlib module to get file size.

os.path module:

  • os.path.getsize(‘file_path’) : Return the file size in bytes.
  • os.stat(file).st_size : Return the file size in bytes

Pathlib module:

os.path.getsize() Method to Check File Size

For example, you want to read a file to analyze the sales data to prepare a monthly report, but before performing this operation we want to check whether the file contains any data.

The os.path module has some valuable functions on pathnames. Here we will see how to use the os.path module to check the file size.

  1. Important the os.path module This module helps us to work with file paths and directories in Python. Using this module, we can access and manipulate paths
  2. Construct File Path A file path defines the location of a file or folder in the computer system. There are two ways to specify a file path.

Absolute path: which always begins with the root folder. The absolute path includes the complete directory list required to locate the file. For example, /user/Pynative/data/sales.txt is an absolute path to discover the sales.txt. All of the information needed to find the file is contained in the path string.

Relative path: which is relative to the program’s current working directory.

Example To Get File Size

import os.path # file to check file_path = r'E:/demos/account/sales.txt' sz = os.path.getsize(file_path) print(f'The size is', sz, 'bytes')
E:/demos/account/sales.txt size is 10560 bytes

Get File Size in KB, MB, or GB

Use the following example to convert the file size in KB, MB, or GB.

import os.path # calculate file size in KB, MB, GB def convert_bytes(size): """ Convert bytes to KB, or MB or GB""" for x in ['bytes', 'KB', 'MB', 'GB', 'TB']: if size < 1024.0: return "%3.1f %s" % (size, x) size /= 1024.0 f_size = os.path.getsize(r'E:/demos/account/sales.txt') x = convert_bytes(f_size) print('file size is', x)

os.stat() Method to Check File Size

The os.stat() method returns the statistics of a file such as metadata of a file, creation or modification date, file size, etc.

  • First, import the os module
  • Next, use the os.stat('file_path') method to get the file statistics.
  • At the end, use the st_size attribute to get the file size.

Note: The os.path.getsize() function internally uses the os.stat('path').st_size .

import os # get file statistics stat = os.stat(r'E:/demos/account/sales.txt') # get file size f_size = stat.st_size print('file size is', f_size, 'bytes')

Pathlib Module to Get File Size

From Python 3.4 onwards, we can use the pathlib module, which provides a wrapper for most OS functions.

  • Import pathlib module: Pathlib module offers classes and methods to handle filesystem paths and get data related to files for different operating systems.
  • Next, Use the pathlib.Path('path').stat().st_size attribute to get the file size in bytes
import pathlib # calculate file size in KB, MB, GB def convert_bytes(size): """ Convert bytes to KB, or MB or GB""" for x in ['bytes', 'KB', 'MB', 'GB', 'TB']: if size < 1024.0: return "%3.1f %s" % (size, x) size /= 1024.0 path = pathlib.Path(r'E:/demos/account/sales.txt') f_size = path.stat().st_size print('File size in bytes', f_size) # you can skip this if you don't want file size in KB or MB x = convert_bytes(f_size) print('file size is', x)

Get File Size of a File Object

Whenever we use file methods such as read() or a write(), we get a file object in return that represents a file.

Also, sometimes we receive a file object as an argument to a function, and we wanted to find a size of a file this file object is representing.

All the above solutions work for a file present on a disk, but if you want to find file size for file-like objects, use the below solution.

We will use the seek() function to move the file pointer to calculate the file size. Let’s see the steps.

  • Use the open() function to open a file in reading mode. When we open a file, the cursor always points to the start of the file.
  • Use the file seek() method to move the file pointer at the end of the file.
  • Next, use the file tell() method to get the file size in bytes. The tell() method returns the current cursor location, equivalent to the number of bytes the cursor has moved, which is nothing but a file size in bytes.
# fp is a file object. # read file fp = open(r'E:/demos/account/sales.txt', 'r') old_file_position = fp.tell() # Moving the file handle to the end of the file fp.seek(0, 2) # calculates the bytes size = fp.tell() print('file size is', size, 'bytes') fp.seek(old_file_position, 0)

Sumary

In this article, We used the following three methods of an OS and pathlib module to get file size.

os.path module:

  • os.path.getsize('file_path') : Return the file size in bytes.
  • os.stat(file).st_size : Return the file size in bytes

Pathlib module:

Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.

About Vishal

I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter

Python Exercises and Quizzes

Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.

  • 15+ Topic-specific Exercises and Quizzes
  • Each Exercise contains 10 questions
  • Each Quiz contains 12-15 MCQ

Источник

How to Get File Size in Python

How to Get File Size in Python

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

File Size in Python

The python os module has stat() function where we can pass the file name as argument. This function returns a tuple structure that contains the file information. We can then get its st_size property to get the file size in bytes. Here is a simple program to print the file size in bytes and megabytes.

# get file size in python import os file_name = "/Users/pankaj/abcdef.txt" file_stats = os.stat(file_name) print(file_stats) print(f'File Size in Bytes is ') print(f'File Size in MegaBytes is ') 

File Size In Python

Output: If you look at the stat() function, we can pass two more arguments: dir_fd and follow_symlinks. However, they are not implemented for Mac OS. Here is an updated program where I am trying to use the relative path but it’s throwing NotImplementedError.

# get file size in python import os file_name = "abcdef.txt" relative_path = os.open("/Users/pankaj", os.O_RDONLY) file_stats = os.stat(file_name, dir_fd=relative_path) 
Traceback (most recent call last): File "/Users/pankaj/. /get_file_size.py", line 7, in file_stats = os.stat(file_name, dir_fd=relative_path) NotImplementedError: dir_fd unavailable on this platform 

Python File Size Relative Path NotImplementedError

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases. Learn more about us

Источник

Оцените статью