Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In Python, is read() , or readlines() faster?

Tags:

I want to read a huge file in my code. Is read() or readline() faster for this. How about the loop:

for line in fileHandle 
like image 514
Programmer Avatar asked Feb 22 '11 08:02

Programmer


People also ask

What is the difference between read () and Readlines () function in Python?

The read() will read the whole file at once and then print out the first characters that take up as many bytes as you specify in the parenthesis versus the readline() that will read and print out only the first characters that take up as many bytes as you specify in the parenthesis.

What is the difference between the read () and Readlines () methods?

The only difference between the Read() and ReadLine() is that Console. Read is used to read only single character from the standard output device, while Console. ReadLine is used to read a line or string from the standard output device. Program 1: Example of Console.

What is read () in Python?

Python File read() Method The read() method returns the specified number of bytes from the file. Default is -1 which means the whole file.

What is the difference between read readline Readlines?

In the commands read() , readline() and readlines() , one difference is of course reading whole file, or a single line, or specified line.


1 Answers

For a text file just iterating over it with a for loop is almost always the way to go. Never mind about speed, it is the cleanest.

In some versions of python readline() really does just read a single line while the for loop reads large chunks and splits them up into lines so it may be faster. I think that more recent versions of Python use buffering also for readline() so the performance difference will be minuscule (for is probably still microscopically faster because it avoids a method call). However choosing one over the other for performance reasons is probably premature optimisation.

Edit to add: I just checked back through some Python release notes. Python 2.5 said:

It’s now illegal to mix iterating over a file with for line in file and calling the file object’s read()/readline()/readlines() methods.

Python 2.6 introduced TextIOBase which supports both iterating and readline() simultaneously.

Python 2.7 fixed interleaving read() and readline().

like image 110
Duncan Avatar answered Oct 20 '22 08:10

Duncan