File handling is an essential aspect of programming, allowing you to read from and write to files. Python provides a variety of functions and methods to perform file operations. This guide will cover the basics of file handling in Python, including CRUD (Create, Read, Update, Delete) operations, methods, and real-world examples.
Basic File Operations
Opening a File
To open a file in Python, use the open()
function. The open()
function takes two parameters: the file name and the mode.
file = open("example.txt", "r") # Open a file for reading
File Modes
Mode | Description |
---|---|
‘r’ | Open for reading (default) |
‘w’ | Open for writing, truncating the file |
‘x’ | Open for exclusive creation |
‘a’ | Open for writing, appending to the file |
‘b’ | Binary mode |
‘t’ | Text mode (default) |
‘+’ | Open for updating (reading and writing) |
Example
file = open("example.txt", "w") # Open a file for writing
file.write("Hello, World!")
file.close()
CRUD Operations
Create
To create a new file, open it in write mode. If the file does not exist, it will be created.
file = open("newfile.txt", "w")
file.write("This is a new file.")
file.close()
Read
To read the contents of a file, open it in read mode and use the read()
method.
file = open("example.txt", "r")
content = file.read()
print(content)
file.close()
Update
To update a file, open it in append mode and use the write()
method to add new content.
file = open("example.txt", "a")
file.write("\nThis is an update.")
file.close()
Delete
To delete a file, use the os.remove()
function from the os
module.
import os
os.remove("example.txt")
File Methods
Python provides several built-in methods for file handling.
Method | Description | Example Code |
---|---|---|
read(size) | Reads size bytes from the file. | file.read(10) |
readline() | Reads a single line from the file. | file.readline() |
readlines() | Reads all lines from the file and returns them as a list. | file.readlines() |
write(string) | Writes the string to the file. | file.write("Hello, World!") |
writelines(list) | Writes a list of strings to the file. | file.writelines(["Hello, ", "World!"]) |
close() | Closes the file. | file.close() |
flush() | Flushes the internal buffer. | file.flush() |
seek(offset, whence) | Moves the file pointer to the specified location. | file.seek(0) |
tell() | Returns the current file pointer position. | file.tell() |
truncate(size) | Truncates the file to the specified size. | file.truncate(10) |
Examples
# Reading a file
file = open("example.txt", "r")
print(file.read())
file.close()
# Writing to a file
file = open("example.txt", "w")
file.write("Hello, World!")
file.close()
# Appending to a file
file = open("example.txt", "a")
file.write("\nThis is an update.")
file.close()
# Reading lines from a file
file = open("example.txt", "r")
lines = file.readlines()
for line in lines:
print(line.strip())
file.close()
Using with
Statement
It is good practice to use the with
statement when dealing with file objects. The advantage is that the file is properly closed after its suite finishes, even if an exception is raised at some point.
Example
with open("example.txt", "r") as file:
content = file.read()
print(content)
Real-World Use Cases
Use Case 1: Reading a Configuration File
config = {}
with open("config.txt", "r") as file:
for line in file:
name, value = line.strip().split("=")
config[name] = value
print(config)
Use Case 2: Writing Logs to a File
def log_message(message):
with open("log.txt", "a") as file:
file.write(message + "\n")
log_message("This is a log message.")
Use Case 3: Processing a CSV File
import csv
with open("data.csv", "r") as file:
reader = csv.reader(file)
for row in reader:
print(row)
Professional Tips
- Use the
with
Statement: Always use thewith
statement to ensure that files are properly closed after their suite finishes. - Handle Exceptions: Use
try...except
blocks to handle exceptions that may occur during file operations. - Validate File Paths: Ensure that file paths are valid and accessible before performing file operations.
- Use Binary Mode for Non-Text Files: When working with non-text files (e.g., images, executables), use binary mode (
'b'
).
Conclusion
File handling is a crucial aspect of programming, allowing you to read from and write to files. By understanding the various techniques and best practices for file handling in Python, you can write more efficient and reliable code. Happy coding!