Introduction
Files provide persistent storage for application data. Python provides many built-in functions and methods to manipulate files and handle common file operations efficiently.
In this tutorial, we will learn how to work with files in Python while building out an example project.
File Operations in Python
Opening and Closing File Operations in Python
The open()
method is used to open a file and return a file object. We can specify the mode while opening – r
for read, w
for write, a
for append etc.
file = open('test.txt', 'r')
This opens test.txt in read mode. Once done, we should close the file using the close()
method:
file.close()
This opens test.txt in write mode, overwriting existing contents. We then write a line to it and close the file.
Handling Modes and Errors
Mode | Description |
---|---|
‘r’ | Open for reading (default) |
‘w’ | Open for writing, truncating (overwriting) the file first |
‘x’ | Open for exclusive creation, failing if the file already exists |
‘a’ | Open for writing, appending to the end of the file if it exists |
‘b’ | Binary mode |
‘t’ | Text mode (default) |
‘+’ | Open a disk file for updating (reading and writing) |
We can specify a second parameter mode
while opening files to configure modes:
file = open('test.txt', 'r') # read mode
file = open('test.txt', 'w') # write mode
file = open('test.txt', 'a') # append mode
The IOError
exception is raised if the file cannot be opened correctly. We should handle this gracefully in our code:
try:
f = open("test.txt", encoding = 'utf-8')
except IOError:
print("Error: Could not find file test.txt")
Reading Files
Once a file object is opened in read r
mode, we can call read()
to read its contents:
file = open('test.txt', 'r')
print(file.read())
This reads and prints the entire file contents.
Alternately, we can read a fixed number of bytes from a file:
print(file.read(100)) # Reads 100 bytes
Iterating Through Files
We can loop over a file object to iterate line by line:
for line in file:
print(line, end = '')
This prints each file line ending with a newline by default. The end
parameter overrides this to print without adding new lines.
Checking Status File Operations in Python
Python provides methods to check file status and attributes:
print(file.closed) # Returns True if file is closed
print(file.mode) # Access file open mode - r, w, a etc.
print(file.name) # Filename of opened file
These help query file status programmatically.
Example Project
Let’s build a Python script to analyze a text file:
filename = input("Enter file name: ")
word_count = 0
char_count = 0
file = open(filename, 'r')
data = file.read()
words = data.split()
word_count = len(words)
for char in data:
if char != ' ' and char != '\n':
char_count += 1
print("Word count:", word_count)
print("Character count:", char_count)
file.close()
This takes a filename input, opens the file in read mode, counts words and characters, and prints the metrics before closing the file.
The example demonstrates how we can apply Python’s versatile file handling capabilities to build useful scripts.
Python File Methods
Here is a table listing common Python file methods and their usage:
Method | Description |
---|---|
file.read() | Reads entire file contents as a string |
file.read(n) | Reads next n bytes from file |
file.readline() | Reads next line ending with newline character |
file.readlines() | Reads all lines, returns list of lines |
file.write(str) | Writes string to file |
file.writelines(lines) | Writes list of strings to file |
file.seek(offset) | Changes file position to offset |
file.tell() | Returns current file position |
file.flush() | Flushes write buffer contents to disk |
file.close() | Closes opened file and release resources |
file.name | Returns filename of opened file |
file.mode | Returns file open mode – r, w, a etc |
file.closed | Returns True if file is closed |
Conclusion
Python provides many intuitive ways to handle common file operations like opening, closing, reading and writing with just a few lines of code. Robust file I/O capabilities are critical to building Python apps that interact with the file system. Mastering file operations unlocks the ability to persist and process application data, export results, implement logging and more. The file object makes it easy to manipulate files programmatically. Overall, Python greatly simplifies file handling for developers.
Frequently Asked Questions
Q: How do you open and close a file in Python?
A: Use the open() method to open a file and get a file object. Use the close() method on the file object to close it.
Q: How do you write to a file in Python?
A: Open the file in write (‘w’), append (‘a’) or exclusive (‘x’) mode and use the write() method to write strings to the file.
Q: How can you read a file line-by-line in Python?
A: Use a for loop on the file object to iterate over each line, or call readline() inside a loop to read lines.
Q: What is the difference between the ‘w’ and ‘a’ modes?
A: ‘w’ mode overwrites the file if it already exists, while ‘a’ mode appends to the end of the existing file contents.
Q: How are errors handled when opening file operations in Python?
A: Use try/except blocks to gracefully handle errors like FileNotFound or PermissionError exceptions.