[Tutor] binary file query
Alan Gauld
alan.gauld at btinternet.com
Fri Nov 18 00:39:11 CET 2011
On 17/11/11 14:55, Prasad, Ramit wrote:
> It means that no need to use the 'Struct' module for binary file read,
> right?
Its not necessary but if the data does not already have a file handling
module then the struct module is a very convenient way of accessing the
data.
> It really depends on your file. The struct module says, "This module
> performs conversions between Python values and C structs represented
> as Python strings." If your file is not a C-struct data then no need
> to use the struct module.
No *need* but, often convenient, regardless of whether the data was
written by a C struct or not.(*) It is a way to interpret binary data in
terms of fundamental data types such as ints, floats, strings etc.
Trying to convert raw bytes representing floats into a floating point
number without using struct would be an interesting exercise. Using
struct it's trivial.
Struct works with any kind of basic binary data provided you know what
the byte sequence represents. Where it breaks down is when it represents
more complex concepts like references to objects and even graphical
bitmaps etc. That's where dedicated file handling modules
come into play.
(*)The struct docs acknowledge this with the following comment:
"To handle platform-independent data formats or omit implicit pad bytes,
use standard size and alignment instead of native size and alignment:
see Byte Order, Size, and Alignment for details."
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
More information about the Tutor
mailing list