file handling in python

File Handling in Python

April 6th, 2026
9634

File handling in Python is used for interacting with files on the local file system. It involves performing different operations like creating, opening, reading, writing, appending, and closing them. You can use it for storing and retrieving data persistently, which helps them to manage configurations, handle logs, and process large datasets.

Understanding this concept is very important as a Python developer, data analyst, web developer, and system administrator. Each of them deals with these files in their daily tasks. Here, the question comes: how? It is a multistep process that includes opening, writing, closing, and managing potential errors. Let’s understand the complete process step by step.

What is File Handling in Python?

File handling in Python is the process of working with files on secondary storage systems, like a hard drive. It uses built-in functions to perform operations such as creating, reading, updating and deleting files.

It is used to manage external data stored in files. It also helps Python programs to interact with the persistent data on your disk. This makes it possible to store the output of your program for later use or to read input data for processing.

Also Explore: Python Tutorial for deep understanding of Python Programming

Why File Handling is Important in Real-World Applications

File handling plays a critical role in real-world software development because most applications need to store, retrieve and process data outside the program’s runtime memory. Unlike variables that disappear once execution stops, files allow programs to persist data on disk and reuse it later. From small automation scripts to large enterprise systems, file operations are fundamental for managing structured and unstructured data efficiently.

In practical environments, file handling is utilized in various scenarios across multiple industries. Below are some of the most common real-world applications where file operations become essential:

Use Case How File Handling is Used
Data Persistence Applications store user data, reports, and generated results in files so that information remains available even after the program closes.
Configuration Management Many systems read configuration files to load API keys, environment variables, database credentials, and application settings at runtime.
Logging and Monitoring Programs generate log files to record system events, errors, and execution details, which help developers in software testing and debugging.
Data Analysis and Reporting Analysts frequently read large datasets from CSV, JSON, or text files for data analysis (cleaning and processing) and generating insights.
Automation Scripts Automation tools read input files, modify their content, and generate updated output files to streamline repetitive tasks.

As nearly every modern application interacts with external data in some form, mastering file handling is not optional for developers. It is a foundational skill that enables scalable data management, reliable application behavior, and efficient automation workflows.

Types of Files in Python

Python works with two primary types of files, which are text files and binary files. Both types are handled differently at the system level. The way data is stored, interpreted and processed depends on whether the file contains human-readable characters or raw byte data. this is where you should choose the correct file type to ensure proper data handling, prevent corruption and improve application reliability. Let's understand these types in detail:

1. Text Files

Text files store data as a sequence of characters. These characters are encoded using standards such as ASCII or UTF-8 so that they can be read and understood by humans. When Python works with text files, it automatically performs encoding and decoding between characters and bytes behind the scenes. This makes text files easy to read, edit, and process using standard string operations.

Common examples of text files include:

  • .txt (plain text files)
  • .py (Python source code files)
  • .csv (Comma-Separated Values files)
  • .html (Web markup files)
  • .json (Structured data files)

Text files are typically opened using modes like 'r', 'w', or 'a'. Python automatically converts the internal byte data into readable strings when reading, and converts strings back into bytes when writing.

Example of opening a text file:

with open("example.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

Specifying the encoding parameter is considered a best practice, especially when working with international characters.

2. Binary Files

Binary files store data as raw bytes rather than readable characters. Unlike text files, binary files are not meant to be interpreted directly as human-readable content. They contain structured byte-level information that represents images, audio, video, executable programs, or compressed archives.

Examples of binary file types include:

  • .jpg and .png (image files)
  • .mp3 and .mp4 (audio and video files)
  • .exe (executable files)
  • .zip (compressed files)
  • .pdf (document files)

When working with binary files, Python does not perform any encoding or decoding. The data is read and written exactly as bytes. To handle binary files, you must use modes such as 'rb' (read binary) or 'wb' (write binary).

Example of opening a binary file:

with open("image.jpg", "rb") as file:
    binary_data = file.read()
    print(type(binary_data))  # Output: <class 'bytes'>

Binary mode is essential when dealing with multimedia files or transferring data over networks, as improper handling can corrupt the file.

Text Files vs Binary Files: A Quick Comparison Table

Feature Text Files Binary Files
Data Format Sequence of characters Sequence of raw bytes
Human Readable Yes No
Encoding Required Yes (UTF-8, ASCII, etc.) No encoding conversion
Common Modes 'r', 'w', 'a' 'rb', 'wb', 'ab'

Master Python Programming with Python Training

Boost your coding skills and gain hands-on knowledge in Python.

Explore Now

How to Open Files in Python?

Opening the files is the first operation one must do to manage them. Python's built-in function open() is used for this and returns a file object. It acts as the link between your program and the file. The syntax for the open() function is:

file_object = open(file_name, access_mode)

The key to file handling is the access mode, which specifies the type of operation you intend to perform. 

Example: Opening a file for reading

try:
    file = open("my_data.txt", "r")
    print("File opened successfully.")
except FileNotFoundError:
    print("Error: The file does not exist.")

File Modes in Python

File modes define how a file should be opened and what operations can be performed on it. When using the open() function, the mode argument tells Python whether you want to read, write, append, or work with binary data. It is important to choose the correct modeas it determines how the file behaves if it already exists or does not exist. Using the wrong mode can lead to accidental data loss or runtime errors.

Mode Description
'r' Read mode (default). Raises error if file does not exist.
'w' Write mode. Overwrites existing file or creates new one.
'a' Append mode. Adds content to end of file.
'x' Exclusive creation. Fails if file already exists.
'rb' Read binary mode.
'wb' Write binary mode.
'r+' Read and write mode.

How to Write Files in Python?

You can write anything in a file once it is opened in a writing ('w', 'a', 'w+', 'a+') mode. Use the file object's write() method for it. The write() method takes a string as an argument and writes it to the file. It is important to remember that write() does not automatically add a newline character (\n). You must include it manually if you want content on separate lines.

Example: Writing content to a file using the 'w' (write) mode

# Open in 'w' mode (will create the file or overwrite existing content)
file = open("my_output.txt", "w")

# Write some content
file.write("First line of text.\n")
file.write("Second line, written in Python.")

# Close the file to ensure data is saved
file.close()

If you ran this code again, the first line would overwrite the file and only the two lines above would remain.

Example: Appending content to a file using the 'a' (append) mode

# Open in 'a' mode (will add to the end of existing content)
file = open("my_output.txt", "a")

# Append a new line
file.write("\nThis line was appended later.")

file.close()

Master Data Science with Python with Our Training Program

Boost your coding skills and gain hands-on knowledge in Data Science with Python.

Explore Now

How to Close Files in Python?

It is the most important step in file handling. You must call the close() method on the file object to ensure all changes are saved and the file is released. Failing to close a file can lead to:

1. Data Loss/Corruption: Data written to the file might be temporarily buffered and not actually saved to disk until the file is closed.

2. Resource Leaks: The operating system has a limit on the number of files a program can have open simultaneously. Unclosed files consume system resources.

3. File Locking: Other programs might not be able to access or modify the file until your program closes it.

Example: Explicitly closing a file

file = open("demo.txt", "w")
# ... operations ...
file.close() # Always remember to close!

How to Use With Statements?

Wherever you explicitly call file.close(), it always shows an error. This error occurs between the open() and close() calls, which may crash the program before reaching the close() statement. The best way to manage file operations is using the with statement in conjunction with the open() function. The with statement uses context managers and guarantees that the close() method is automatically called.

Example Syntax using with statement

with open("my_file.txt", "r") as file:
    # Operations go inside this block
    content = file.read() 

# The file is automatically closed as soon as the block is exited
print(content) 
print(file.closed) # Output: True

The file object is assigned to the variable defined after the as keyword. Python handles the cleanup automatically once the indented block is finished. This makes your code safer and cleaner.

Read Also- Python Hello World: Writing Your First Program

Handling Exceptions When Closing a File

Closing a file explicitly can also lead to an exception that could prevent the code from reaching file.close(). The most robust way to manage this without the with statement is by using a try...finally block. The finally block is guaranteed to execute even if an exception occurred in the try block.

file = None
try:
    # 1. Open the file
    file = open("dangerous_operation.txt", "w")
    
    # 2. Perform a potentially risky operation
    file.write("Writing data...")
    # Imagine a ZeroDivisionError happens here...
    
except Exception as e:
    print(f"An error occurred: {e}")
    
finally:
    # 3. Ensure the file is closed, regardless of errors
    if file is not None:
        file.close()
        print("File successfully closed in finally block.")

Explore: Exception Handling in Python for Better Understanding

File Pointer Methods

A file pointer represents the current position of the cursor inside an open file. It moves automatically when you read or write data. However, sometimes you may need to manually control or check the cursor position. This is where you need to use the file pointer methods. Let's explore the two most used methods that can help you reposition the cursor and retrieve its current location.

1. seek()

The seek() method moves the file pointer to a specific position within the file. This is useful when you want to reread content or overwrite data from a certain location.

2. tell()

The tell() method returns the current position of the file pointer in bytes.

with open("sample.txt", "r") as file:
    print(file.tell())   # Current position
    file.read(5)
    print(file.tell())   # Position after reading
    file.seek(0)         # Move back to start

Learn AI with Python with Our Latest Training Program

Boost your coding skills and gain hands-on knowledge in AI with Python.

Explore Now

Working with CSV and JSON Files

Structured data formats like CSV and JSON are widely used by developers in real-world applications like data exchange, configuration storage and reporting. This means you should understand how to work with these files. Python provides built-in modules and packages that simplify working with these file types while ensuring proper formatting and parsing.

  • Reading CSV Files Using csv Module

CSV (Comma-Separated Values) files are commonly used to store tabular data such as spreadsheets or database exports. The csv module in Python helps read and write CSV files efficiently without manually splitting strings.

import csv

with open("data.csv", "r", newline="") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

  • Working With JSON Using json Module

JSON (JavaScript Object Notation) is a lightweight data format used for APIs, configuration files, and data storage. Python’s json module allows you to convert JSON data into Python dictionaries and lists, and vice versa.

import json

with open("data.json", "r") as file:
    data = json.load(file)
    print(data)

Common Mistakes in File Handling

Beginners often make mistakes when working with files, which can lead to data loss, runtime errors or inefficient programs. You also need to be aware of these common issues. This will help you write safer and more reliable code.

  • Forgetting to close files after opening them.
  • Using write mode ('w') unintentionally overwrites important data.
  • Not specifying encoding when working with special characters.
  • Reading very large files at once causes memory issues.
  • Ignoring proper exception handling.

Best Practices for File Handling in Python

Professional developers always adopt safe handling techniques (best practices) to prevent unexpected errors and data corruption. You should also know them to become a proficient Python developer. Here are some of them:

  • Always use the with statement for automatic file closure.
  • Specify encoding="utf-8" when working with text files.
  • Use proper exception handling to manage errors gracefully.
  • Avoid reading large files entirely into memory unless necessary.
  • Choose the correct file mode to prevent accidental overwriting.

File Management Principles

Beyond reading and writing, the os and shutil modules provide powerful tools for file management:

Module Purpose Key Function Example
os Interacting with the operating system (paths, environment, etc.) os.remove("old_file.txt") (Delete a file)
os.path Checking and manipulating file paths os.path.exists("file.txt") (Check if a path exists)
shutil High-level file operations (copying, moving) shutil.copy("src.txt", "dest.txt") (Copy a file)

Example: Deleting a file

import os

if os.path.exists("my_output.txt"):
    os.remove("my_output.txt")
    print("File deleted successfully.")
else:
    print("The file does not exist.")

Get Certified in Cybersecurity with Python with Our Training Program

Boost your coding skills and gain hands-on knowledge in CyberSecurity with Python.

Explore Now

Wrapping Up

File Handling in Python is a foundational concept that bridges your running program with the permanent data storage of your computer. By understanding the different access modes, utilizing the robust with statement for automatic cleanup, and managing your files with the os module, you can build powerful and reliable applications. Always default to the with open(...) construct. It is the best practice for secure and effective file management.

Learn Other Python Concepts with Our Comprehensive Guides: 

FAQs: File Handling in Python

Q1. What is the default mode for the open() function in Python?

The default access mode for the open() function is 'r' (read mode) for text files. Python attempts to open the file for reading after you omit the mode argument.

Q2. What is the difference between read(), readline() and readlines()?

These are methods used on a file object opened in read mode:

  • read(): Reads the entire content of the file and returns it as a single string.
  • readline(): Reads one single line from the file and returns it as a string.
  • readlines(): Reads all lines from the file and returns them as a list of strings where each element is one line.

Q3. How do I create a new file in Python without overwriting an existing one?

Use the exclusive creation mode 'x'. This mode is specifically designed to create a new file.

About the Author
Sanjay Prajapat
About the Author

Sanjay Prajapat is a Data Engineer and technology writer with expertise in Python, SQL, data visualization, and machine learning. He simplifies complex concepts into engaging content, helping beginners and professionals learn effectively while exploring emerging fields like AI, ML, and cybersecurity in today’s evolving tech landscape.

Drop Us a Query
Fields marked * are mandatory

Programming Certification Courses

×

Your Shopping Cart


Your shopping cart is empty.