Binary file Pt 1 - Only reading some

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Tue Feb 5 12:54:08 EST 2008


En Tue, 05 Feb 2008 11:50:25 -0200, Mastastealth <mastastealth at gmail.com>  
escribi�:

> 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."
http://pyconstruct.wikispaces.com

There are some recipes in the Python Cookbook too:  
http://aspn.activestate.com/ASPN/Cookbook/Python

-- 
Gabriel Genellina




More information about the Python-list mailing list