python的struct包让二进制文件的处理变的非常简单,通过unpack可以方便的进行把文件的内容读读取到变量里。
在调用unpack时需要指定两个参数,第一个是读取内容的格式化字符串(如"I32s32sI"),第二个是从文件里读取到的指定长度的内容。格式化字符串在指定了unpack变量的同时,也指定了本次要读取的文件内容的长度,也就是第二个参数的长度,两个必须保持一致,否则会抛出异常。
当然这个长度可以根据格式化字符串的内容自己加出来,这样没有问题,但麻烦还容易出错。struct包提供了更简单的方法,就是calcsize函数。把格式化字符串作为参数传给该函数,即可返回出应读取内容的长度,是不是很方便?!