Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #75367
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Subject | Re: one to many (passing variables) |
| Date | 2014-07-30 13:37 +0200 |
| Organization | None |
| References | <CAHXoDSB+-Vkggfd57nb9eLSK7Pb_fbuycGTJZM=+6=4VZo3F0w@mail.gmail.com> <8561innkmw.fsf@benfinney.id.au> <53D308CB.8030900@cdreimer.com> <lr68a2$i6d$1@ger.gmane.org> <53D8D693.9040505@rece.vub.ac.be> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.12429.1406720261.18130.python-list@python.org> (permalink) |
Antoon Pardon wrote:
> Taking this in consideration I think the io.RawIOBase.read got it
> backwards.
>
> The documentation says the following:
>
> | If 0 bytes are returned, and size was not 0, this indicates end of file.
> | If the object is in non-blocking mode and no bytes are available, None
> | is returned.
>
> But typically if you are reading in non-blocking mode, no bytes availabe
> can be treated as if you receive an empty (byte)string. While reaching the
> end of the stream is different. So it would have been more consistent if
> an empty (byte)string was return in case of no bytes availabe and None or
> io.EOF or something like that in case of end of file.
>
> Now I have to write things as follows:
>
> for block in iter(partial(RawStream.read, 1024), ''):
> if block is not None:
> for b in block
> process(b)
or
for block in ...:
for b in block or ():
process(b)
> Otherwise I could write it more as follows:
>
> for block in iter(partial(RawStream.read, 1024), io.EOF):
> for b in block
> process(b)
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: one to many (passing variables) Peter Otten <__peter__@web.de> - 2014-07-30 13:37 +0200
csiph-web