Python open() Function Tutorial — Read, Write & Manage Files Like a Pro
Last updated 6 months, 3 weeks ago | 459 views 75 5
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
withstatement -
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
withto 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.