Python open() Function Tutorial — Read, Write & Manage Files Like a Pro

Last updated 5 months, 1 week ago | 376 views 75     5

Tags:- Python

Working with files is a fundamental skill for every Python developer. Whether you want to read from a file, write logs, or manage datasets, Python’s built-in open() function is the key.

This tutorial will teach you:

  • What the open() function is and how it works

  • File modes (read, write, append, etc.)

  • How to read and write files

  • Best practices using the with statement

  • Common mistakes and how to avoid them

  • A complete real-world example


What is the open() Function?

The open() function opens a file and returns a file object, which gives you access to methods like .read(), .write(), .close() and more.

Syntax:

open(file, mode='r', encoding=None)
  • file: The name (or path) of the file to open

  • mode: The file access mode (default is 'r' for read)

  • encoding: Optional, but usually set to "utf-8" for text files


File Modes Explained

Mode Description
'r' Read (default). File must exist.
'w' Write. Creates new or truncates existing file.
'a' Append. Creates file if it doesn't exist.
'x' Create. Fails if file already exists.
'b' Binary mode (e.g., 'rb', 'wb')
't' Text mode (default)
'+' Read and write combined ('r+', 'w+', etc.)

You can combine modes like 'rb', 'w+', 'a+' etc.


✏️ Writing to a File in Python

Using 'w' mode — Overwrites the file

with open("example.txt", "w") as file:
    file.write("Hello, world!\n")
    file.write("This is a new line.")

This will create example.txt if it doesn’t exist, or overwrite it if it does.

Using 'a' mode — Appends to the file

with open("example.txt", "a") as file:
    file.write("\nAppended line.")

Reading from a File in Python

1. .read() — Read the entire file as a single string

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

2. .readline() — Read one line at a time

with open("example.txt", "r") as file:
    line = file.readline()
    print(line)

3. .readlines() — Read all lines as a list

with open("example.txt", "r") as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())

✅ Why Use the with Statement?

Using with open(...) automatically:

  • Opens the file

  • Closes the file (even if an error occurs)

  • Is cleaner and safer than manually using .close()

Example:

with open("file.txt", "r") as f:
    data = f.read()
# No need to call f.close()

Complete Example: File Logger

Let’s create a logger that writes and reads logs from a file.

def log_event(message):
    with open("log.txt", "a") as f:
        f.write(message + "\n")

def read_log():
    try:
        with open("log.txt", "r") as f:
            print("Log Contents:")
            print(f.read())
    except FileNotFoundError:
        print("No log file found.")

# Usage
log_event("Application started")
log_event("User logged in")
read_log()

Sample Output:

Log Contents:
Application started
User logged in

Pro Tips for Using open()

  • ✅ Always use with to handle files safely

  • ✅ Use encoding="utf-8" for text files to support special characters

  • ✅ Check if a file exists with os.path.exists() before reading

  • ✅ Prefer 'a' mode when logging to avoid overwriting old data


⚠️ Common Pitfalls and Mistakes

Mistake Why it’s a Problem Solution
Forgetting to close the file Can cause memory leaks or file locks Use with open()
Using 'w' when you mean 'a' Overwrites the file Be careful with write mode
Reading a binary file in text mode File content will be corrupted Use 'rb' or 'wb'
Writing non-strings Raises TypeError Convert with str() or use formatted strings

Summary

Task Code Example
Open file open("file.txt", "r")
Read file .read(), .readline(), .readlines()
Write file .write(), .writelines()
Safely open file with open(...) as f:
Check if file exists os.path.exists("file.txt")

Final Thoughts

Python’s open() function is powerful yet simple. With a good understanding of modes and best practices like using with, you can confidently handle files in any project—logs, config files, data import/export, and more.