Hacker News new | ask | show | jobs
by cpjk 4651 days ago
Forgive me, but doesn't file.readline() provide the same functionality for reading a single line at a time from a file?
2 comments

Yeah, but aren't we actually supposed to do this?

  for line in file:
Yes, and that is the idiomatic way to read files in Python. I guess me and the author are looking at different Python programs, because slurping the whole file is not "by far the most common way" I have seen files read in the wild.
Most of my code slurps the entire file at a time. I can't actually think of any code we have that streams the code.

Then again, most of my files are three dimensional matrices. There's nothing I can really do on a line by line basis.

Yes, this is essentially looping over successive calls to file.readline()
With at least one small (and usually irrelevant) difference: "for line in file" has its own internal buffering which cannot be turned off with python -u.

I learned this the hard way when debugging a Python script that read from tail -f output...

I thought a function that reads a line from a file would read the entire line and block until doing so. How would turning off line buffering change that? Do you expect 'for line in file' to yield as many bytes as is available if a full line can't be read yet?