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 开发Activex组件方法
Nov 08 Python
python正则表达式re模块详细介绍
May 29 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
python读写二进制文件的方法
May 09 Python
Python中Class类用法实例分析
Nov 12 Python
关于Python 3中print函数的换行详解
Aug 08 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
Python pandas常用函数详解
Feb 07 Python
对python中的xlsxwriter库简单分析
May 04 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python descriptor(描述符)的实现
Nov 15 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
php读取javascript设置的cookies的代码
2010/04/12 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
2020/05/02 PHP
语义化 H1 标签
2008/01/14 Javascript
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
2015/05/18 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
react基本安装与测试示例
2020/04/27 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
详解python使用Nginx和uWSGI来运行Python应用
2018/01/09 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python目录和文件处理总结详解
2019/09/02 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
英国医生在线预约:Top Doctors
2019/10/30 全球购物
四年的个人工作自我评价
2013/12/10 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
本溪关门山导游词
2015/02/09 职场文书
审美与表现自我评价
2015/03/09 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
Python基础之数据类型知识汇总
2021/05/18 Python