Read Specific Lines from a File in Python
In Python, you can read specific lines from a file using various approaches such as looping through the file, using list indexing, the readlines()
method, or a combination of enumerate()
and conditional statements. Below, we explore different ways to achieve this with examples.
Examples
1. Reading a Specific Line Using readlines()
The readlines()
method reads all lines from a file and returns them as a list. You can use list indexing to access a specific line.

main.py
# Open the file in read mode
with open("example.txt", "r") as file:
lines = file.readlines() # Read all lines into a list
# Read the third line (index 2 since indexing starts from 0)
specific_line = lines[2]
# Print the result
print("Third line:", specific_line.strip())
Explanation
Here, we open the file example.txt
in read mode and use readlines()
to store all lines as a list in the lines
variable. Since lists in Python use zero-based indexing, the third line is accessed using lines[2]
. The strip()
function removes trailing newline characters.
Output:

2. Reading Multiple Specific Lines Using enumerate()
We can use enumerate()
to iterate through the file and extract specific lines based on their index.

main.py
# Define the specific line numbers we want to read (0-based index)
line_numbers = [1, 2]
# Open the file in read mode
with open("example.txt", "r") as file:
for i, line in enumerate(file):
if i in line_numbers:
print(f"Line {i+1}: {line.strip()}")
Explanation
Here, line_numbers
is a list containing the indices of the lines we want to read. We use enumerate()
to iterate through the file, which provides both the index (i
) and the content (line
). When i
matches an index in line_numbers
, we print the line.
Output:

3. Reading a Range of Lines Using islice()
from itertools
The islice()
function from the itertools
module allows efficient reading of a specific range of lines.

main.py
from itertools import islice
# Open the file in read mode
with open("example.txt", "r") as file:
specific_lines = list(islice(file, 2, 5)) # Read lines 3 to 5 (zero-based indexing)
# Print the result
for i, line in enumerate(specific_lines, start=3):
print(f"Line {i}: {line.strip()}")
Explanation
Here, we use islice(file, 2, 5)
to extract lines from index 2 (third line) to index 5 (sixth line, exclusive). The enumerate()
function ensures correct numbering.
Output:

Since we have only three lines in the example.txt, only the third line is printed to the output.
4. Using List Comprehension to Read Specific Lines
List comprehension provides a concise way to extract specific lines.

main.py
# Define the line numbers to extract
line_numbers = {0, 2}
# Open the file and extract specific lines using list comprehension
with open("example.txt", "r") as file:
selected_lines = [line.strip() for i, line in enumerate(file) if i in line_numbers]
# Print the result
for i, line in zip(sorted(line_numbers), selected_lines):
print(f"Line {i+1}: {line}")
Explanation
We define line_numbers
as a set of indices to extract. The list comprehension iterates over the file, keeping only the required lines. The zip()
function ensures correct line numbering.
Output:

Conclusion
Python provides several ways to read specific lines from a file:
readlines()
: Stores all lines as a list, allowing direct indexing.enumerate()
: Iterates through the file and extracts specific lines.islice()
fromitertools
: Reads a range of lines efficiently.- List Comprehension: A concise way to extract multiple specific lines.