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 Web开发模板引擎优缺点总结
May 06 Python
Python中optparse模块使用浅析
Jan 01 Python
在Django中使用Sitemap的方法讲解
Jul 22 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
简单的python后台管理程序
Apr 13 Python
Python算法输出1-9数组形成的结果为100的所有运算式
Nov 03 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
基于python图像处理API的使用示例
Apr 03 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
Pandas的Apply函数具体使用
Jul 21 Python
总结python 三种常见的内存泄漏场景
Nov 20 Python
Python实现区域填充的示例代码
Feb 03 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
PHP小程序自动提交到自助友情连接
2009/11/24 PHP
linux中cd命令使用详解
2015/01/08 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
PHP文件后缀不强制为.php方法
2019/03/31 PHP
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
js中运算符&& 和 || 的使用记录
2014/08/21 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
Vue 实现树形视图数据功能
2018/05/07 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
Python循环语句中else的用法总结
2016/09/11 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
基于python全局设置id 自动化测试元素定位过程解析
2019/09/04 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
初中同学聚会邀请函
2014/02/03 职场文书
《中国梦我的梦》大学生演讲稿
2014/08/20 职场文书
养成教育工作总结
2015/08/13 职场文书
自考生自我评价
2019/06/21 职场文书
详解thinkphp的Auth类认证
2021/05/28 PHP