The code I'm currently working on involves parsing binary data. If I ask for, 
say, 4 bytes, it's because I actually need 4 bytes and if the file doesn't have 
4 bytes for me, it's malformed. Because `f.read(4)` can silently return less 
than 4 bytes and I don't want to have to explicitly double check every read, 
I'm using a wrapper function.

def read_exact(f, size):
    data = f.read(size)
    if len(data) < size:
         raise EOFError(f"expected read of size {size}, got {len(data)}")
    return data

I don't think my scenario of "give me exactly the number of bytes/characters I 
asked for or fail noisily" is particularly uncommon, so I think that a similar 
function should be added to the standard library somewhere. I guess as a 
function in `io`?

Admittedly, as my own code demonstrates, implementing it yourself if you need 
it is trivial, so it may not actually be worth adding.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/3T2N6QRXR7SQVFGEBLG5HZSPI235D44R/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to