Binary file Pt 1 - Only reading some
gagsl-py2 at yahoo.com.ar
Tue Feb 5 18:54:08 CET 2008
En Tue, 05 Feb 2008 11:50:25 -0200, Mastastealth <mastastealth at gmail.com>
> On Feb 5, 1:17 am, Gabriel Genellina <gagsl-... at yahoo.com.ar> wrote:
>> Using the struct module http://docs.python.org/lib/module-struct.html
>> import struct
>> data = info.read(15)
>> str1, str2, blank, height, width, num2, num3 =
>> struct.unpack("6s3s1cBBBh", data)
>> Consider this like a "first attempt", open issues: is the data little-
>> endian or big-endian? does the 0-5 mean 0x00-0x05 or "0"-"5"? the last
>> numbers are 2-byte binary integers, or 0000-0899 might indicate BDC?
>> But building the right format is surely faster and easier than parsing
>> the data by hand.
> Ah ok, thanks! That worked, though the line "str1, str2, blank,
> height, width, num2, num3 =" spit out a syntax error. However, I do
> see that it creates a tuple with all the values in a readable format
> for me. Also, I needed to change info.read(15) to 16. More questions:
> What is this value for? "6s3s1cBBBh" and why is my unpack limited to a
> length of "16"?
That's the format describing how to decode your bytes: first, a string of
six characters; then a string of 3 characters followed by a single
character, three individual bytes, and a short integer.
> Unfortunately it seems my understanding of binary is way too basic for
> what I'm dealing with. Can you point me to a simple guide to
> explaining most of it? As far as I know this is just a bunch of 1's
> and 0's right? Each byte has 8 digits of, of which somehow is
> converted to a number or letter. Don't know what most of that stuff in
> the struct page means. -_-
I'm afraid I don't know any simple guide to struct. Perhaps people think
that if you manage binary data with struct, you must already be a Python
guru or something...
You could try "construct" instead: "Construct is a python library for
parsing and building of data structures (binary or textual). It is based
on the concept of defining data structures in a declarative manner, rather
than procedural code. [...] It's the first library that makes parsing fun,
instead of the usual headache it is today."
There are some recipes in the Python Cookbook too:
More information about the Python-list