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