[Tutor] reading binary files

Alan Gauld alan.gauld at btinternet.com
Mon Feb 2 14:38:46 CET 2009


<etrade.griffiths at dsl.pipex.com> wrote>
>  I am trying to read data from a file that has format
> item_name  num_items  item_type  items ....
> 
> eg
> 
> TIME      1  0.0
> DISTANCE 10  0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0

Where is the item_type?

> I can read this if the data are in ASCII format using
> 
>    in_file = open("my_file.dat","r")
>    data1 = in_file.read()
>    tokens = data1.split()

It might be easier to process line by line using readline 
or readlines rather than read but otherwise, ok so far...

> and then stepping through the resulting list but the data 
> also appear in the same format in a binary file.  

When you say a binary file do you mean an ASCII file 
encoded into binary using some standard algorithm?
Or do you mean the data is binary so that, for example, 
the number 1 would appear as 4 bytes? If so do you 
know how strings (the name) are delimited? Also 
how many could be present - is length a single or 
multiple bytes? and are the reors fixed length or 
variable? If variable what is the field/record separator?

You may need to load the file into a hex editor of debugger 
to determine the answers...

Having done that the struct module will allow you to read 
the data.

You can see a basic example of using struct in my 
tutorial topic about handling files.

HTH,

-- 
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld



More information about the Tutor mailing list