How to Get the Size of a File in Python: A Comprehensive Guide

Updated on May 8, 2026
Table of Contents
    The Solution

    Use Python's os.path.getsize() or pathlib.Path().stat().st_size to get the size of a file in bytes.

    The Concept

    Determining the size of a file in Python is a straightforward task thanks to its built-in libraries. The most direct method is using os.path.getsize(), which returns the size of a file in bytes. For a more modern approach, the pathlib module offers a clean, object-oriented way to achieve the same result with Path().stat().st_size.

    Deep Technical Dive & Misconceptions

    While os.path.getsize() is a thin wrapper over the os.stat() system call, it provides a quick way to get file size without additional metadata. The os.stat() function, on the other hand, returns a full status report on the file, including size, modification time, and more. The pathlib module, introduced in Python 3.4, offers an object-oriented interface for filesystem paths, making code more readable and expressive.

    A common misconception is that these methods can handle non-existent files silently. In reality, they will raise a FileNotFoundError if the file does not exist. Similarly, a PermissionError will be raised if the file is inaccessible due to permission issues.

    Code Examples

    import os
    
    file_path = 'instantanswerlab.com/my_file.txt'
    try:
        file_size = os.path.getsize(file_path)
        print(f"File size: {file_size} bytes")
    except FileNotFoundError:
        print("File not found.")
    from pathlib import Path
    
    file_path = Path('instantanswerlab.com/my_file.txt')
    try:
        file_size = file_path.stat().st_size
        print(f"File size: {file_size} bytes")
    except FileNotFoundError:
        print("File not found.")
    import os
    
    file_path = 'instantanswerlab.com/my_file.txt'
    try:
        stat_info = os.stat(file_path)
        print(f"File size: {stat_info.st_size} bytes")
    except FileNotFoundError:
        print("File not found.")
    def format_size(size_bytes, decimals=2):
        if size_bytes == 0:
            return "0 Bytes"
        power = 1024
        units = ["Bytes", "KB", "MB", "GB", "TB", "PB"]
        i = int(math.floor(math.log(size_bytes, power)))
        return f"{size_bytes / (power ** i):.{decimals}f} {units[i]}"
    
    import os
    
    file_path = 'instantanswerlab.com/large_file.zip'
    try:
        raw_size = os.path.getsize(file_path)
        readable_size = format_size(raw_size)
        print(f"Raw size: {raw_size} bytes")
        print(f"Human-readable size: {readable_size}")
    except FileNotFoundError:
        print("File not found.")
    import os
    
    file_path = 'instantanswerlab.com/secure_file.dat'
    try:
        file_size = os.path.getsize(file_path)
        print(f"File size: {file_size} bytes")
    except FileNotFoundError:
        print("File not found.")
    except PermissionError:
        print("Insufficient permissions to access the file.")

    Comparison Table

    Method Returns Best for Notes
    os.path.getsize(path) Integer bytes Quick size retrieval Minimal call, no extra metadata
    os.stat(path).st_size Integer bytes Size with metadata Full stat_result object
    Path(path).stat().st_size Integer bytes Modern, readable code Integrates with Path APIs

    Frequently Asked Questions

    What is the simplest way to get a file's size in Python?

    The simplest way is using os.path.getsize(), which returns the file size in bytes.

    How can I handle errors when getting a file's size?

    Wrap your code in a try...except block to handle FileNotFoundError and PermissionError gracefully.

    Is there a modern way to get file size in Python?

    Yes, the pathlib module provides a modern, object-oriented approach with Path().stat().st_size.

    How can I convert file size to a human-readable format?

    You can use a helper function to convert bytes into KB, MB, or GB for better readability.

    What should I do if a file is not found?

    Handle the FileNotFoundError exception to provide a user-friendly message or alternative action.

    Was this solution helpful?
    Report Broken Code or Error

    Help us improve. Paste the error you got or explain what went wrong.

    Thanks! We will review and fix this.

    Related Questions

    Comments & Discussions

    Log in or Sign up to join the discussion.