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 Property属性的2种用法
Jun 21 Python
Python max内置函数详细介绍
Nov 17 Python
pandas series序列转化为星期几的实例
Apr 11 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
python实现点对点聊天程序
Jul 28 Python
Django框架模板介绍
Jan 15 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 Python
python解析多层json操作示例
Dec 30 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
详解python logging日志传输
Jul 01 Python
Python unittest如何生成HTMLTestRunner模块
Sep 08 Python
python控制台打印log输出重复的解决方法
May 14 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 JWT在web端中的使用方法教程
2018/09/06 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
2013/07/08 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
2015/04/12 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
js纯数字逐一停止显示效果的实现代码
2016/03/16 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
Jquery获取当前城市的天气信息
2016/08/05 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
python调用cmd复制文件代码分享
2013/12/27 Python
python socket 超时设置 errno 10054
2014/07/01 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
Python使用re模块验证危险字符
2020/05/21 Python
通过实例解析python and和or使用方法
2020/11/14 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
单位提档介绍信
2014/01/17 职场文书
交通安全教育制度
2014/02/02 职场文书
小班教师个人总结
2015/02/05 职场文书
体育教师个人工作总结
2015/02/09 职场文书
新娘婚礼致辞
2015/07/27 职场文书
学生安全责任协议书
2016/03/22 职场文书
SpringBoot生成License的实现示例
2021/06/16 Java/Android
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python