How to do this in Python?
andrew cooke
andrew at acooke.org
Tue Mar 17 18:30:06 EDT 2009
Jim Garrison wrote:
> I'm an experienced C/Java/Perl developer learning Python.
>
> What's the canonical Python way of implementing this pseudocode?
>
> String buf
> File f
> while ((buf=f.read(10000)).length() > 0)
> {
> do something....
> }
>
> In other words, I want to read a potentially large file in 10000 byte
> chunks (or some other suitably large chunk size). Since the Python
> 'file' object implements __next__() only in terms of lines (even,
> it seems, for files opened in binary mode) I can't see how to use
> the Python for statement in this context.
>
> Am I missing something basic, or is this the canonical way:
>
> with open(filename,"rb") as f:
> buf = f.read(10000)
> while len(buf) > 0
> # do something....
> buf = f.read(10000)
embarrassed by the other reply i have read, but not doing much binary i/o
myself, i suggest:
with open(...) as f:
while (True):
buf = f.read(10000)
if not buf: break
...
but are you sure you don't want:
with open(...) as f:
for line in f:
...
andrew
More information about the Python-list
mailing list