I've recently discovered a Python "nifty" regarding iter()
. We've seen this form of iterable file read a million times:
with open('eek.txt', 'rt') as f: for line in f: # Some super-cool stuff!
But!! Did you know you can read arbitrary-length buffers in a similar form? Use the iter(object, sentinel)
form of the call and you can do this:
with open('eek.txt', 'rt') as f: # Use whatever chunk size you want for buff in iter(lambda: f.read(1024), ''): # Super-cool stuff using a 1K buffer!!
The use of iter(read_chunk, '')
is basically saying: "Call read_chunk
until you get an empty string." This could be done with binary files as well. The mode would be 'rb'
and the sentinel would be b''
.
Neato, eh?
Top comments (0)