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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/3T2N6QRXR7SQVFGEBLG5HZSPI235D44R/
Code of Conduct: http://python.org/psf/codeofconduct/