On Tuesday, August 26, 2014 6:58:42 AM UTC+5:30, Tim Roberts wrote: > bwatas 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. I thought much the same. However notice your f.read(). Its type is string. What if file.dat is a 1GB wav file? -- https://mail.python.org/mailman/listinfo/python-list