python读写二进制文件的方法


Posted in Python onMay 09, 2015

本文实例讲述了python读写二进制文件的方法。分享给大家供大家参考。具体如下:

初学python,现在要读一个二进制文件,查找doc只发现 file提供了一个read和write函数,而且读写的都是字符串,如果只是读写char等一个字节的还行,要想读写如int,double等多字节数 据就不方便了。在网上查到一篇贴子,使用struct模块里面的pack和unpack函数进行读写。下面就自己写代码验证一下。

>>> from struct import *
>>> file = open(r"c:/debug.txt", "wb")
>>> file.write(pack("idh", 12345, 67.89, 15))
>>> file.close()

接着再将其读进来

>>> file = open(r"c:/debug.txt", "rb")
>>> (a,b,c) = unpack("idh",file.read(8+8+2))
>>> a,b,c
(12345, 67.890000000000001, 15)
>>> print a,b,c
12345 67.89 15
>>> file.close()

在操作过程中需要注意数据的size

注意  wb,rb中的b字,一定不可以少

方法1:

myfile=open('c:\\t','rb')
s=myfile.read(1)
byte=ord(s) #将一个字节 读成一个数
print hex(byte) #转换成16进制的字符串

方法2

import struct
myfile=open('c:\\t','rb').read(1)
print struct.unpack('c',myfile)
print struct.unpack('b',myfile)

写入

To open a file for binary writing is easy, it is the same way you do for reading, just change the mode into “wb”.
file = open("test.bin","wb")
But, how to write the binary byte into the file?
You may write it straight away with hex code like this:
file.write("\x5F\x9D\x3E") file.close()
Now, check it out with hexedit,
hexedit test.bin
You will see this:
00000000 5F 9D 3E _.> 00000020 00000040
Now, open the file to append more bytes:
file = open("test.bin","ab")
What if I want to store by bin value into a stream and write it one short?
s ="\x45\xF3" s = s + "%c%c" % (0x45,0xF3) file.write(s) file.close()
Any convenient ways if I can obtained a hex string, and want to convert it back to binary format?
Yes, you just need to import binascii
import binascii hs="5B7F888489FEDA" hb=binascii.a2b_hex(hs) file.write(hb) file.close()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python实现网页链接提取的方法分享
Feb 25 Python
Python图片裁剪实例代码(如头像裁剪)
Jun 21 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
Python 使用类写装饰器的小技巧
Sep 30 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
Python按钮的响应事件详解
Mar 04 Python
python绘制无向图度分布曲线示例
Nov 22 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
python利用opencv实现颜色检测
Feb 23 Python
Python求导数的方法
May 09 #Python
Python itertools模块详解
May 09 #Python
python读取word文档的方法
May 09 #Python
python动态性强类型用法实例
May 09 #Python
Python functools模块学习总结
May 09 #Python
Python浅拷贝与深拷贝用法实例
May 09 #Python
九步学会Python装饰器
May 09 #Python
You might like
phpize的深入理解
2013/06/03 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
JS实现容器模块左右拖动效果
2020/01/14 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Django基于ORM操作数据库的方法详解
2018/03/27 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
客服服务心得体会
2013/12/30 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
合伙协议书
2014/04/23 职场文书
主要负责人任命书
2014/06/06 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
vue项目中的支付功能实现(微信支付和支付宝支付)
2022/02/18 Vue.js
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android