Reading files line by line helps you handle large files without using too much memory. It lets you process each line one at a time, like reading a book page by page.
Reading files line by line in Python
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Python
with open('filename.txt', 'r') as file: for line in file: # process the line print(line, end='')
The with statement automatically closes the file when done.
Each line includes the newline character \n at the end.
Examples
Python
with open('example.txt', 'r') as file: for line in file: print(line.strip())
readline() to read one line at a time until the file ends.Python
file = open('example.txt', 'r') line = file.readline() while line: print(line.strip()) line = file.readline() file.close()
Python
with open('example.txt', 'r') as file: lines = file.readlines() for line in lines: print(line.strip())
Sample Program
This program first creates a file with three lines. Then it reads the file line by line and prints each line with a message.
Python
filename = 'sample.txt' # Create a sample file with open(filename, 'w') as f: f.write('Hello\n') f.write('World\n') f.write('Python is fun!\n') # Read the file line by line with open(filename, 'r') as file: for line in file: print(f'Read line: {line.strip()}')
Important Notes
Remember to use strip() if you want to remove the newline \n from each line.
Using with is best practice because it closes the file automatically.
Reading line by line is good for big files to save memory.
Summary
Reading files line by line lets you handle big files easily.
Use with open(filename) as file and a for loop to read lines.
Use strip() to clean lines before using them.
Practice
1. What does the following code do?
with open('data.txt') as file:
for line in file:
print(line)easy
Solution
Step 1: Understand the with open statement
The code opens 'data.txt' for reading and ensures it closes automatically after use.Step 2: Analyze the for loop over the file object
Looping over the file reads it line by line, printing each line including its newline character.Final Answer:
Reads and prints each line from 'data.txt' including newline characters -> Option DQuick Check:
Reading lines one by one = Reads and prints each line from 'data.txt' including newline characters [OK]
Hint: Looping file reads lines one by one including newlines [OK]
Common Mistakes:
- Thinking it reads whole file at once
- Confusing reading with writing
- Assuming it creates a file
2. Which of these is the correct syntax to read a file line by line in Python?
easy
Solution
Step 1: Check the correct use of with open
with open('file.txt') as f: for line in f: print(line) correctly uses 'with open(filename) as f:' to open the file safely.Step 2: Verify the for loop syntax
with open('file.txt') as f: for line in f: print(line) uses 'for line in f:' which is the proper way to iterate lines in the file object.Final Answer:
with open('file.txt') as f:\n for line in f:\n print(line) -> Option AQuick Check:
Correct with open and for loop syntax = with open('file.txt') as f: for line in f: print(line) [OK]
Hint: Use 'with open' and 'for line in file' to read lines [OK]
Common Mistakes:
- Missing 'with' keyword
- Using wrong loop syntax like 'while line in f'
- Using undefined variable 'file' instead of 'f'
3. What will be the output of this code if 'test.txt' contains:\nLine1\nLine2\n\nLine4\n?
with open('test.txt') as f:
for line in f:
print(line.strip())medium
Solution
Step 1: Understand strip() effect on lines
strip() removes whitespace including newlines, so empty lines become empty strings.Step 2: Analyze printing each stripped line
Empty lines print as blank lines, but print() adds a newline, so empty lines show as blank lines.Final Answer:
Line1\nLine2\n\nLine4 -> Option AQuick Check:
strip() on empty -> '', print('') = blank line = Line1\nLine2\n\nLine4 [OK]
Hint: strip() removes newlines, print adds one newline per line [OK]
Common Mistakes:
- Assuming strip() keeps newlines
- Confusing blank lines with extra newlines
- Ignoring print() adds newline automatically
4. Find the error in this code snippet:
with open('file.txt') as f:
for line in file:
print(line)medium
Solution
Step 1: Check variable names used in the loop
The file is opened as 'f', but the loop uses 'file' which is undefined.Step 2: Confirm correct variable usage
Changing 'file' to 'f' fixes the error and allows reading lines properly.Final Answer:
Variable 'file' is undefined; should use 'f' instead -> Option CQuick Check:
Use same variable name as in with open = Variable 'file' is undefined; should use 'f' instead [OK]
Hint: Use same variable name from with open in for loop [OK]
Common Mistakes:
- Using different variable names
- Assuming file is a keyword
- Ignoring variable scope inside with block
5. You want to read a large log file line by line and count how many lines contain the word 'error'. Which code snippet correctly does this?
hard
Solution
Step 1: Choose efficient line-by-line reading
count = 0 with open('log.txt') as f: for line in f: if 'error' in line: count += 1 print(count) uses 'with open' and iterates file line by line, which is memory efficient for large files.Step 2: Check condition for counting 'error' in line
count = 0 with open('log.txt') as f: for line in f: if 'error' in line: count += 1 print(count) correctly checks if 'error' is anywhere in the line and increments count.Final Answer:
count = 0\nwith open('log.txt') as f:\n for line in f:\n if 'error' in line:\n count += 1\nprint(count) -> Option BQuick Check:
Efficient reading + correct condition = count = 0 with open('log.txt') as f: for line in f: if 'error' in line: count += 1 print(count) [OK]
Hint: Use with open and for line in file for big files [OK]
Common Mistakes:
- Using readlines() for big files (memory issue)
- Forgetting to close file without with
- Checking line equality instead of substring
