What Is File Handling in Python?
File handling in Python means working with files stored on your computer or server. It allows a Python program to read data from files, write new data, update existing content, and manage files and folders. Almost every real-world application uses file handling in some way, whether it is storing logs, reading configuration values, processing user uploads, or handling reports.
Python makes file handling easier compared to many languages by providing simple built-in functions and libraries. Instead of dealing with low-level memory management, Python lets developers focus on business logic while safely interacting with the file system.
File Handling Basics in Python
The foundation of file handling in Python is the open() function. When a file is opened, Python creates a file object that acts as a connection between your program and the file stored on disk.
Every file is opened using a specific mode that defines what operations are allowed: reading, writing, appending, or working with binary data.
file = open("example.txt", "r")
However, in real-world applications, files should always be closed properly to avoid memory leaks or file locks. That is why Python developers prefer using the with statement.
with open("example.txt", "r") as file:
content = file.read()
The with statement automatically closes the file, even if an error occurs. This is extremely important in production systems where files may be accessed by multiple processes.
Real-World Use Cases
- Reading configuration values when an application starts
- Writing application logs for debugging and monitoring
- Saving user-generated content
Common Mistakes
- Opening a file in the wrong mode
- Forgetting to close the file
- Assuming a file always exists
Reading and Writing Text Files
Text files are the most commonly used file type. They store data as readable characters and are widely used for logs, reports, notes, and exports.
Reading Text Files
Python provides multiple ways to read text files depending on the use case.
with open("notes.txt", "r") as file:
data = file.read()
For large files, reading line by line is more memory-efficient.
with open("logs.txt", "r") as file:
for line in file:
print(line)
Writing to Text Files
Writing text files is commonly used when generating reports, saving user feedback, or storing processed data.
with open("output.txt", "w") as file:
file.write("Processing completed successfully")
Append mode is useful when you want to keep existing data and add new content.
with open("app.log", "a") as file:
file.write("New log entry\n")
Edge Cases
- Overwriting files accidentally using write mode
- Handling newline characters correctly
- Encoding issues when reading non-English text
Binary File Handling
Binary files store data in raw bytes instead of readable text. Images, audio files, videos, PDFs, and compressed files are all binary files. These files must be handled carefully because incorrect processing can corrupt the data.
Reading Binary Files
with open("image.jpg", "rb") as file:
binary_data = file.read()
Binary file handling is commonly used when transferring files over the network, uploading files to cloud storage, or reading files received from APIs.
Writing Binary Files
with open("copy.jpg", "wb") as file:
file.write(binary_data)
Real-World Examples
- Uploading images in a web application
- Downloading files from cloud services
- Processing media files
Important Edge Cases
- Always use binary mode for non-text files
- Large file sizes can impact memory usage
Working with CSV Files in Python
CSV (Comma-Separated Values) files are widely used for storing tabular data. They are simple, lightweight, and supported by almost every data tool.
Python provides the csv module to handle CSV files safely without manual string parsing.
Reading CSV Files
import csv
with open("users.csv", "r") as file:
reader = csv.reader(file)
for row in reader:
print(row)
Writing CSV Files
import csv
with open("report.csv", "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(["Name", "Age", "City"])
writer.writerow(["John", 30, "New York"])
Real-World Use Cases
- Importing Excel data into databases
- Exporting analytics reports
- Sharing structured data between systems
Edge Cases
- Handling missing or malformed rows
- Dealing with large CSV files efficiently
Working with JSON Files
JSON (JavaScript Object Notation) is one of the most common formats for data exchange. It is heavily used in APIs, configuration files, and microservices communication.
Reading JSON Files
import json
with open("config.json", "r") as file:
data = json.load(file)
Writing JSON Files
import json
data = {"theme": "dark", "language": "en"}
with open("settings.json", "w") as file:
json.dump(data, file, indent=4)
Real-World Examples
- Storing application settings
- Saving API responses for caching
- Exchanging data between services
Edge Cases
- Invalid JSON structure
- Handling nested objects
File System Operations in Python
File handling does not stop at reading and writing files. Python also allows you to interact with the file system to create folders, check file existence, and manage paths.
Common File System Operations
import os
os.path.exists("data.txt")
os.mkdir("logs")
These operations are critical in automation scripts, backend services, and deployment pipelines.
Real-World Use Cases
- Creating upload directories dynamically
- Cleaning old log files
- Managing backups
Edge Cases
- Permission errors
- Platform-specific path issues