Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Reading file data
📖 Scenario: You have a text file that contains a list of fruits, one fruit per line. You want to read this file and work with the fruit names in your Python program.
🎯 Goal: Learn how to open a file, read its contents line by line, and print the list of fruits.
📋 What You'll Learn
Create a text file named fruits.txt with the exact fruit names given.
Open the file for reading using Python.
Read all lines from the file into a list.
Print the list of fruits exactly as read from the file.
💡 Why This Matters
🌍 Real World
Reading data from files is common when working with logs, configuration files, or any saved information.
💼 Career
Many programming jobs require reading and processing data from files, so this skill is essential.
Progress0 / 4 steps
1
Create the fruits.txt file with fruit names
Create a text file named fruits.txt with these exact lines, each on its own line: apple, banana, cherry, date, elderberry.
Python
Hint
Use open with mode 'w' to write to the file. Use \n to add new lines.
2
Open the file fruits.txt for reading
Write code to open the file fruits.txt for reading and assign the file object to a variable called file.
Python
Hint
Use open with mode 'r' to read the file.
3
Read all lines from the file into a list called fruits
Use the readlines() method on the file object to read all lines into a list called fruits.
Python
Hint
The readlines() method reads all lines into a list, including newline characters.
4
Print the list fruits and close the file
Print the variable fruits to display the list of fruit names. Then close the file using the close() method.
Python
Hint
Use print(fruits) to show the list. Don't forget to close the file with file.close().
Practice
(1/5)
1. What does the open('file.txt', 'r') command do in Python?
easy
A. It creates a new file named 'file.txt'.
B. It deletes the file 'file.txt'.
C. It opens the file 'file.txt' for reading.
D. It writes data to 'file.txt'.
Solution
Step 1: Understand the open() function
The open() function is used to open a file in a specified mode.
Step 2: Recognize mode 'r'
Mode 'r' means open the file for reading only, no writing or creating.
Final Answer:
It opens the file 'file.txt' for reading. -> Option C
Quick Check:
open() with 'r' = open for reading [OK]
Hint: Mode 'r' always means read file only [OK]
Common Mistakes:
Confusing 'r' with write mode 'w'
Thinking it creates a new file
Assuming it deletes the file
2. Which of the following is the correct syntax to read all content from a file using with?
easy
A. open('data.txt', 'r') as file:
content = file.read()
B. with open('data.txt', 'w') as file:
content = file.read()
C. with open('data.txt', 'r'):
content = file.read()
D. with open('data.txt', 'r') as file:
content = file.read()
Solution
Step 1: Check the use of 'with' statement
The 'with' statement must be followed by open(filename, mode) as variable to assign the file object.
Step 2: Verify reading mode and method
Mode 'r' is for reading, and file.read() reads all content.
Final Answer:
with open('data.txt', 'r') as file:
content = file.read() -> Option D
Quick Check:
with + open + 'r' + read() = correct syntax [OK]
Hint: Use 'with open(filename, 'r') as f:' to read files safely [OK]
Common Mistakes:
Using 'w' mode when reading is needed
Missing 'as file' after open()
Not indenting inside 'with' block
3. What will be the output of this code if 'example.txt' contains three lines: 'apple', 'banana', 'cherry'?
with open('example.txt', 'r') as f:
lines = f.readlines()
print(lines)
medium
A. ['apple\n', 'banana\n', 'cherry\n']
B. ['apple\n', 'banana\n', 'cherry']
C. apple banana cherry
D. ['apple', 'banana', 'cherry']
Solution
Step 1: Understand readlines() behavior
readlines() reads all lines into a list, each line ending with a newline character '\n' except possibly the last.
Step 2: Check the file content and output
Since the file has three lines, the list will contain each line as a string with '\n' at the end except maybe the last line. Usually, text files end lines with '\n', so all lines have '\n'.
Final Answer:
['apple\n', 'banana\n', 'cherry\n'] -> Option A
Quick Check:
readlines() returns list of lines with '\n' [OK]
Hint: readlines() keeps newline characters '\n' at line ends [OK]
Common Mistakes:
Assuming readlines() strips '\n'
Confusing read() output with readlines()
Expecting a single string instead of list
4. Identify the error in this code snippet that tries to read a file line by line:
file = open('notes.txt', 'r')
for line in file.read():
print(line)
file.close()
medium
A. Using 'r' mode instead of 'w' mode
B. Using file.read() instead of file.readlines() or iterating directly on file
C. Not closing the file after reading
D. Missing 'with' statement to open the file
Solution
Step 1: Analyze the for loop iteration
The code uses file.read() which returns a single string of the whole file content.
Step 2: Understand iteration over string vs lines
Iterating over a string loops over each character, not each line. To read line by line, use file.readlines() or iterate directly on file.
Final Answer:
Using file.read() instead of file.readlines() or iterating directly on file -> Option B
Quick Check:
read() returns string, not list of lines [OK]
Hint: Iterate file object or use readlines() to get lines [OK]
Common Mistakes:
Iterating over string instead of lines
Forgetting to close the file
Confusing read() and readline()
5. You want to read a file and create a list of all non-empty lines without newline characters. Which code correctly does this?
hard
A. with open('log.txt', 'r') as f:
lines = [line.strip() for line in f if line.strip()]
B. with open('log.txt', 'r') as f:
lines = [line for line in f.readlines() if line != '\n']
C. with open('log.txt', 'r') as f:
lines = f.read().split('\n')
D. with open('log.txt', 'r') as f:
lines = [line.rstrip('\n') for line in f.readlines()]
Solution
Step 1: Remove whitespace and filter empty lines
Using line.strip() removes spaces and newline characters from both ends. The condition if line.strip() filters out empty lines.
Step 2: Use list comprehension on file object
Iterating directly on the file object reads line by line efficiently. This creates a list of cleaned, non-empty lines.
Final Answer:
with open('log.txt', 'r') as f:
lines = [line.strip() for line in f if line.strip()] -> Option A
Quick Check:
strip() + filter empty lines = clean list [OK]
Hint: Use strip() and filter with if line.strip() in comprehension [OK]
Common Mistakes:
Not stripping newline characters
Including empty lines in the list
Using read() then splitting without filtering empty lines