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中函数的参数与作用域
Mar 20 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
python统计多维数组的行数和列数实例
Jun 23 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
对django中foreignkey的简单使用详解
Jul 28 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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更快的提供文件下载的代码
2012/06/13 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
批量下载对路网图片并生成html的实现方法
2016/06/07 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
2017/12/07 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
英国医生在线预约:Top Doctors
2019/10/30 全球购物
老公给老婆的道歉信
2014/01/10 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
伊索寓言教学反思
2014/05/01 职场文书
五五普法心得体会
2014/09/04 职场文书
群众对十八届四中全会的期盼
2014/10/17 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
nginx rewrite功能使用场景分析
2022/05/30 Servers