Python3按一定数据位数格式处理bin文件的方法


Posted in Python onJanuary 24, 2019

因为研究生阶段经常用MATLAB作图,处理数据,但是MATLAB太过于庞大,不方便,就想用python处理。

问题:我们通常处理的最原始的数据是bin文件,打开后如下所示,是按16进制形式存储的。

Python3按一定数据位数格式处理bin文件的方法

MATLAB处理时,是按照如下方式读取前10个数,int32数据格式,上图中的红色圈表示MATLAB读取的一个数据,前10个数据表示元数据。

Python3按一定数据位数格式处理bin文件的方法

MATLAB读取的前10个数据的结果:

Python3按一定数据位数格式处理bin文件的方法

而Python中似乎没有可以在指定数据格式位数下读取bin文件中数据,例如想以python中的read()读取时,图一中的蓝线所圈的表示一个数据,图中圈了两个数据。用以下程序读取MATLAB所读取的10各数据,则需要读40个。

Python3按一定数据位数格式处理bin文件的方法

结果如下:也是16进制

Python3按一定数据位数格式处理bin文件的方法

每隔三个数据对应时MATLAB读取的数据。

想到用struct包里面的unpack函数解决问题,可以可惜的时python中unpack不支持float32,也不支持int32,所以上面在用python读取数据时,不能以32位读取,最多以8位读,从而python挨个读取时一个蓝线圈里的数据。

# 按照给定的格式(fmt)解析字节流string,返回解析出来的tuple

unpack(fmt, string)

string类似于:\x00\x00\x00\x0c\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00]\x00\x00\x00\x0c\x00\x00\x00\x08\x00\x00\x00\t\x00\x00

FORMAT C TYPE PYTHON TYPE STANDARD SIZE NOTES
x pad byte no value
c char string of length 1 1
b signed char integer 1 (3)
B unsigned char integer 1 (3)
? _Bool bool 1 (1)
h short integer 2 (3)
H unsigned short integer 2 (3)
i int integer 4 (3)
I unsigned int integer 4 (3)
l long integer 4 (3)
L unsigned long integer 4 (3)
q long long integer 8 (2), (3)
Q unsigned long long integer 8 (2), (3)
f float float 4 (4)
d double float 8 (4)
s char[] string
p char[] string
P void * integer (5), (3)

个人觉得python这方面做的没有matlab好,

所以python不能以类似于MATLAB中fread(f,N,int32)或者fread(f,N,real*4)的方式读取上图中的字符流,也无法解析。

以上这篇Python3按一定数据位数格式处理bin文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过正则查找微博@(at)用户的方法
Mar 13 Python
使用Python将数组的元素导出到变量中(unpacking)
Oct 27 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
Dec 19 Python
python2.7到3.x迁移指南
Feb 01 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
破解安装Pycharm的方法
Oct 19 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
Dec 28 Python
使用Python Pandas处理亿级数据的方法
Jun 24 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
Python使用post及get方式提交数据的实例
Jan 24 #Python
在python中利用opencv简单做图片比对的方法
Jan 24 #Python
正确理解Python中if __name__ == '__main__'
Jan 24 #Python
对python读取CT医学图像的实例详解
Jan 24 #Python
python 读取dicom文件,生成info.txt和raw文件的方法
Jan 24 #Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
Jan 24 #Python
python Selenium实现付费音乐批量下载的实现方法
Jan 24 #Python
You might like
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
jsp js鼠标移动到指定区域显示选项卡离开时隐藏示例
2013/06/14 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
Python实现多进程的四种方式
2019/02/22 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
keras 如何保存最佳的训练模型
2020/05/25 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
python中类与对象之间的关系详解
2020/12/16 Python
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
网络信息管理员岗位职责
2014/01/05 职场文书
班组长岗位职责
2014/03/03 职场文书
开业主持词
2014/03/21 职场文书
春风行动实施方案
2014/03/28 职场文书
青年文明号服务承诺
2014/03/31 职场文书
2014迎国庆演讲稿
2014/09/19 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
超搞笑婚前保证书
2015/05/08 职场文书
运动会开幕式致辞
2015/07/29 职场文书
初三数学教学反思
2016/02/17 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python