Interview Kickstart has enabled over 21000 engineers to uplevel.
When reading a text file, sometimes we need to take the text one line at a time. This article will discuss some tools Python offers to help facilitate the reading of a file, line by line. In this article, we’ll cover:
To read a file line by line in Python, we can use several methods, but the first step in all the methods is to open the file using the open() function. Let’s briefly look at how this open function works:
open("filePath", "mode")
open("Documents\\test.txt", "r")
t
Default, text mode
r
Read mode
w
Write mode
+
Update mode: read+write mode
x
Creates file, returns an error if file exists
a
Write mode, the content will be appended at the end, creates the file if it doesn’t exist.
b
Binary Mode
rb
Read Binary Mode
wb
Write Binary Mode
If the file is not found in the system path mentioned, we’ll get a FileNotFoundError exception. We need to handle this exception, which we can do in the following way:
try:
open("Documents\\test2.txt", "r")
except FileNotFoundError as not_found:
print("Incorrect file name or path given")
Now that we’ve learned how to open our file for reading, let us look at some ways to read it line by line.
One way to read a file line by line in Python is by using with open() statement. The keyword “with” automatically closes the file once the execution is successful. We already know about the open function. Once we open the file, we can use a for loop to iterate through the file line by line and print each line as shown:
with open("Documents\\test.txt", "r") as file:
for line in file:
print(line)
Another way to read a file line by line in Python is by using the readlines() function, which takes a text file as input and stores each individual line as an element in a list. We can read a file into a list or an array using the readlines() method as shown:
#Into a list
openFile = open("Documents\\test.txt","r")
asList = openFile.readlines()
print(asList)
openFile.close()
#Into an array
asArray = []
with open("Documents\\test.txt", "r") as file:
asArray = file.readlines()
print(asArray)
We can also mention the size of line we want to read inside readlines as readlines(length) and it will only read the line till the desired length:
#Mentioning size
openFile = open("Documents\\test.txt","r")
asList = openFile.readlines(15)
print(asList)
openFile.close()
So if the file openFile contains an address in a few lines, this will only return 0 to 15 characters of the first line of the address. If the first line has more characters than the limit dictates, it will not return address line 2. That is because we’ve limited the length until which the readlines() method needs to read.
If the first line contains fewer characters than the number we have specified, this function keeps on reading lines until the total size of the lines read so far doesn’t exceed the limit we have set. For example, if we have three lines containing four characters each and we specify the limit as 6, then the first two lines will be read.
As we saw in the with open() statement example, since the open function returns an iterable, we can iterate through the file line by line. In this case, we will just use the for loop and not use with open() statement. We will open the file, iterate through it, and separately close the file as shown:
openFile = open("Documents\\test.txt","r")
for line in openFile:
print(line)
openFile.close()
We may also use a while loop to read a file line by line by using the readline() function within it, which reads a text file line by line and returns all lines as strings:
openFile = open("Documents\\test.txt","r")
while openFile:
line = openFile.readline()
print(line)
if line == "":
break
openFile.close()
When the reading of all the lines is completed, readLine returns an empty string. That is why here we break the while loop when we read an empty string.
Since the readlines() method works by loading the whole file into memory and then iterating over it, if a file is large enough, using the readlines() method can lead to MemoryError. For such cases, we can use the input() method in the fileinput module, which reads line by line but doesn’t store the lines in memory after their reading is done. We can also use the for and while loop method over here since we’re reading one line at a time and not storing all the data.
import fileinput
for line in fileinput.input(["Documents\\test.txt"]):
print(line)
Question 1: Do we have to add a comma to indicate the open function takes two parameters if we’re not mentioning the mode within it?
No, it is neither essential to mention the mode nor is it essential to add a comma to indicate it takes two parameters. Although we can add some or all of these, and it will work just as well. All these three versions will run just fine:
openFile = open("Documents\\test.txt","r")
openFile = open("Documents\\test.txt",)
openFile = open("Documents\\test.txt")
Question 2: What is the difference between the read(), readline() and readlines() methods?
While we use all three to read text files, there’s a difference in how they work to achieve that goal:
The read() method
The readlines() method
The readline() method
Reads the whole file’s text into a string
Reads all the lines in a file and returns a list of strings containing the read lines as the elements
Reads the file line by line and returns all the lines as strings
Are you a software engineer looking for coding interview questions to aid your interview prep? Check out these useful pages for software developers:
Whether you’re a Coding Engineer gunning for Software Developer or Software Engineer roles, or you’re targeting management positions at top companies, IK offers courses specifically designed for your needs to help you with your technical interview preparation!
If you’re looking for guidance and help with getting started, sign up for our free webinar. As pioneers in the field of technical interview prep, we have trained thousands of Software Engineers to crack the most challenging coding interviews and land jobs at their dream companies, such as Google, Facebook, Apple, Netflix, Amazon, and more!
————
Article contributed by Tanya Shrivastava
Attend our webinar on
"How to nail your next tech interview" and learn