python如何读取二进制文件为图片_Python二进制文件读取并转换
Python二进制文件读取并转换
Python二进制文件读取并转换
标签(空格分隔): python
本文所用环境:
Python 3.6.5 |Anaconda custom (64-bit)|
引言
由于某些原因,需要用python读取二进制文件,这里主要用到struct包,而这个包里面的方法主要是unpack、pack、calcsize。详细介绍可以看:Python Struct 官方文档。这里主要讨论,python二进制转浮点数的操作。
python中一个float类型的数占4个字节。
二进制数据转float,可以用struct.unpack()来实现。
小文件读取
较小的文件,可以一次读取:
首先导入所需的包:
import numpy as np
import struct
例如:我需要读取一个名为filename,存放着形状为[100,1025]的浮点数的文件。可以采用以下办法
# 加载测试数据
f = open('filename','rb')
# 102500为文档中包含的数字个数,而一个浮点数占4个字节
data_raw = struct.unpack('f'*102500,f.read(4*102500))
f.close()
verify_data = np.asarray(verify_data_raw).reshape(-1,1025)
大文件处理方法
我需要处理的文件大小有38.1G,存放着[10000000,1025]大小的向量。
关于大文件的处理,我参考了这位博主的文章-强悍的 Python —— 读取大文件,前两种方法都会造成MemoryError。第三种不会,但是,这个方法不能很好的将二进制文件转换成浮点数。
所以我想到了另外一种办法:
通过Linux命令切割文件
通过split命令将38.1G的文件按照指定大小切割,
split -b 820000k -a 2 filename data_
上述代码的意思是,指定每块大小为820000k,-a 2代表2位数命名,‘data_’代表前缀是’data_’
最终生成49个文件(字典序 aa – bw),前48个文件每个204800行 最后一个文件 169600行
820000 = 4_1025_204800/1024
通过python循环读取文件
首先构建词汇表:
voc = ['a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x',
'y','z']
voc_short = ['a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v']
为了方便读取,将49个二进制文件转换成numpy专用二进制格式*.npy
for i in voc:
data_name = 'data_a'+str(i)
f = open(data_name,'rb')
data_raw = struct.unpack('f'*209920000,f.read(4*209920000))
f.close()
data = np.asarray(data_raw).reshape(-1,1025)
np.save(data_name+'.npy',data) # 保存data_a*.npy文件
for i in voc_short:
data_name = 'data_b'+str(i)
f = open(data_name,'rb')
data_raw = struct.unpack('f'*209920000,f.read(4*209920000))
f.close()
data = np.asarray(data_raw).reshape(-1,1025)
np.save(data_name+'.npy',data) # 保存data_b*.npy文件
data_name = 'data_bw'
f = open(data_name,'rb')
data_raw = struct.unpack('f'*173840000,f.read(4*173840000))
np.save(data_name+'.npy',data_raw) # 保存data_bw.npy文件
python如何读取二进制文件为图片_Python二进制文件读取并转换相关推荐
- python docx 合并文档 图片_Python+pymupdf处理PDF文档案例6则
推荐图书:<Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷,7月第2次印刷 京东购买链接:https://it ...
- python docx 合并文档 图片_Python检查Word文件中包含特定关键字的所有页码
推荐教材:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社图书详情:配套资源:用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系 ...
- python docx 合并文档 图片_Python和Word的交互批量生成报告
前言: 本文是一位学弟的投稿,主要是用Python将格式不一致的信评简报Word文档快速生成标准格式的表格,涉及到两步,一是读取所有Word文件,二是处理里面的数据并输出到表格里,能大大提高工作的效率 ...
- python docx 合并文档 图片_python玩转pdf全攻略
本篇说点轻松的,聊下Python对pdf的各种操作,包含pdf转word,pdf转图片等. pdf转换word文档 保留格式 pdf转换为word文档,被大众经常使用的是纯Python库pdfmine ...
- python的flask前端显示图片_python Flask中返回图片流给前端展示
python Flask中返回图片流给前端展示 image DHogan 2017-05-16 14:50:48 image 20440 image 收藏 12 版权 场景需求:需要在Flask服务器 ...
- python的flask前端显示图片_python 实现Flask中返回图片流给前端展示
场景需求:需要在Flask服务器的本地找一张图片返回给前端展示出来. 问题疑点:通常前端的标签只会接受url的形式来展示图片,没试过在返回服务器本地的一张图片给前端. 因此写个记录一下这个看起来有点奇 ...
- python中几种读取文件的方法_python 逐行读取文件的几种方法
Python四种逐行读取文件内容的方法 下面四种Python逐行读取文件内容的方法, 分析了各种方法的优缺点及应用场景,以下代码在python3中测试通过, python2中运行部分代码已注释,稍加修 ...
- python爬取贴吧图片_Python爬取贴吧多页图片
Python爬取贴吧图片都只能爬取第一页的,加了循环也不行,现在可以了. #coding:utf-8 import urllib import urllib2 import re import os ...
- python 生成pdf 文字和图片_Python系列—PDF文本与图片抽取
PDF是人们日常使用最多的跨平台文档.其是一种用独立于应用程序.硬件.操作系统的方式呈现文档的文件格式.每个PDF文件包含固定布局的平面文档的完整描述,包括文本.字形.图形及其他需要显示的信息.具有良 ...
最新文章
- 是什么让你开始劝退的?(@韩冬)
- 从ext2文件系统上读出超级块
- windows配置cmder
- wincc7.5官网下载及安装配置(适配window10超详细教程)
- python毕业设计作品基于django框架 景区购票系统毕设成品(6)开题答辩PPT
- python创建文件的方法_python创建文本文件的简单方法
- Oracle获取日期大全(当月的第一天/后一天/上一天/最后一天/上个月这一天)
- 如何连接局域网_Minecraft我的世界局域网联机问题(windows平台)
- 全网M1、MAC傻瓜式免费安装xmind
- java ext_ext下载及使用
- PV UV 日活 月活
- Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operat
- Win8.1 安装NLTK及nltk数据
- 苹果手机怎么关机重启
- “源”来是你-Vol.33 | 浙江大应科技 Aloudata 招聘开源社区运营
- 后端开发如何快速转前端开发
- C#NPOI 往excel里面追加一行或者一个Datatable
- 【渗透测试】Struts2系列漏洞
- 网页中的css代码是写在哪的,网页里面的空格的代码怎么写
- python图像去污_图像去雾----暗通道
热门文章
- ANSI标准数据类型
- storyboard(故事版)新手教程 图文详解 1.创建一个无约束的导航栏加选项卡(tabbar)故事版
- 计算机科学协会入会申请书,计算机协会会长申请书
- 滴滴D1上路之后,科技巨头正在“抢滩登陆“造车战场
- 08、SpringCloud 系列:Nacos - 安装、启动
- 没有对比就没有伤害:《明日之后》竟成最良心国产末日手游?
- ubuntu中vim编辑模式退格键无法删除,方向键乱入ABCD解决方法
- Razorpay 印度第三方支付机构 Razorpay 支付,放款,还款实际操作
- html word表格边框变成表格,word表格边框显示不全跨页面显示的解决方法
- app启动速度优化实践