The "loop and a half"

Steve D'Aprano steve+python at pearwood.info
Wed Oct 4 22:34:09 EDT 2017


On Thu, 5 Oct 2017 10:56 am, Terry Reedy wrote:

>> You're right, that construct isn't used for reading from files in
>> Python.  It _is_ commonly used for reading from things like socket
> 
>> mysock.connect(...)
>> while True:
>>      data = mysock.recv(9999)
>>      if not data:
>>          break
>>      do_something_with(data)
>> mysock.close()
> 
> I contend that it would be better in this case also to separate data
> access from data processing.
[...]
> Perhaps the socket module needs an update to make the boilerplate
> generator function a method, such as 'iterread'.


I was thinking the same thing as Terry.

Obviously we need the low-level socket module for those (hopefully rare) times
we need to interface with a socket at a low level. But I was thinking, why
isn't there an equivalent high-level socket interface, like for files, so we
can simply write something like:

with Socket(spam) as mysock:
    for block in mysock(blocksize):
        ...


I haven't done enough [read: any] socket programming to tell how useful and
practical this is, but it seems like an obvious enhancement.




-- 
Steve
“Cheer up,” they said, “things could be worse.” So I cheered up, and sure
enough, things got worse.




More information about the Python-list mailing list