ANN: binario - simple work with binary files
Tim Roberts
timr at probo.com
Mon Aug 25 21:28:42 EDT 2014
bwatas at gmail.com wrote:
>
>binario is the Python package that lets an application read/write primitive data types from an underlying input/output file as binary data.
>
>Package on PyPI: https://pypi.python.org/pypi/binario
>Package on GitHub: https://github.com/asaskevich/binario
>Docs: http://binarios-docs.readthedocs.org/en/latest/
>
>Package still in Alpha, and I need some help with testing, new features and docs :)
I hope you will accept constructive criticism.
The documentation says it lets an application read/write binary data from
an "underlying input/output stream". That's not really accurate. "Stream"
implies something very general, but your constructors will only accept
filenames. Your code ONLY works with files. If I have a stream of data in
memory, or an already open file, your code can't be used.
This is why packages like "struct" (which is basically a more compact
version of what you are doing) read from a string or a buffer, and leave
the file-like behavior to things that already know how to behave like
files.
Compare your sample code:
>>> import binario
>>> r = binario.Reader("file.dat")
>>> r.read_short()
2014
>>> r.read_bool()
True
>>> r.read_float()
3.1415
>>> r.read_string()
"Hello, world!"
>>> r.read(5)
b'\x80\x14\n\xff\x00'
To the equivalent code with struct:
import struct
dscrp = "H?fs5B"
f = open('file.dat')
stuff = struct.unpack( dscrp, f.read() )
print stuff
In both cases, you have to KNOW the format of the data beforehand. If you
do a read_short where you happen to have written a float, disaster ensues.
I don't really see that you've added very much.
--
Tim Roberts, timr at probo.com
Providenza & Boekelheide, Inc.
More information about the Python-list
mailing list