How to read a text file in Python

Reading a text file in Python is a straightforward process. Python provides built-in functions and methods to handle files effectively. Here’s a detailed explanation:

1. Open the File

Use the open() function to open a file. It has the following syntax:

file = open(file_name, mode)
  • file_name: The name (and path, if desired) of the file you want to open;
  • mode: Describes the way in which the file will be opened. Common modes are:
    • 'r': Read (default). Opens the file for reading.
    • 'w': Write. Opens the file for writing, creating a new file or overwriting an existing file.
    • 'a': Append. Opens the file for appending data.
    • 'rb': Reading in binary mode.
    • 'r+': Reading and writing mode.

2. Read the Content

After opening the file, you can read its contents using different methods:

(a) Read Entire File

file = open("example.txt", "r")  # Open file in read mode
content = file.read()  # Read the entire file content as a single string
print(content)
file.close()  # Close the file

(b) Read Line by Line

file = open("example.txt", "r")
for line in file:  # Iterate through each line in the file
    print(line.strip())  # Print line without extra newline character
file.close()

(c) Read into a List

file = open("example.txt", "r")
lines = file.readlines()  # Reads all lines and stores them as a list of strings
print(lines)
file.close()

3. Close the File

After reading, always close the file using file.close() to free system resources. Forgetting to close a file may cause resource leaks.

4. Best Practice: Use with Statement

Using the with statement is the recommended way to handle files in Python. It automatically closes the file after the block of code is executed.

Example:

with open("example.txt", "r") as file:
    content = file.read()  # Read the entire file
    print(content)
# No need to explicitly close the file; it's handled by `with`.

5. Advanced Reading Options

  • Read a Specific Number of Characters:
with open("example.txt", "r") as file:
    partial_content = file.read(10)  # Read the first 10 characters
    print(partial_content)
  • Read Line by Line Without Loop:
with open("example.txt", "r") as file:
    line1 = file.readline()  # Read the first line
    print(line1)

6. Error Handling

To handle errors (e.g., file not found), use a try-except block:

try:
    with open("nonexistent.txt", "r") as file:
        content = file.read()
except FileNotFoundError:
    print("The file does not exist.")

Summary

  • Use open() to open files.
  • Use read(), readlines(), or iteration to read content.
  • Always close files using close() or a with statement.
  • Handle potential errors gracefully.