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正则表达式抓取成语网站
Nov 20 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
Python实现更改图片尺寸大小的方法(基于Pillow包)
Sep 19 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
python实现两个字典合并,两个list合并
Dec 02 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
Dec 03 Python
python文件和文件夹复制函数
Feb 07 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
Apr 30 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
浅谈Python响应式类库RxPy
Jun 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
Javascript 模式实例 观察者模式
2009/10/24 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
Angular2实现自定义双向绑定属性
2017/03/22 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
python爬取51job中hr的邮箱
2016/05/14 Python
python爬虫_微信公众号推送信息爬取的实例
2017/10/23 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python twilio模块实现发送手机短信功能
2019/08/02 Python
Pytorch之parameters的使用
2019/12/31 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
Python如何定义有默认参数的函数
2020/08/10 Python
python 高阶函数简单介绍
2021/02/19 Python
CSS3之背景尺寸Background-size使用介绍
2013/10/14 HTML / CSS
Canvas实现贝赛尔曲线轨迹动画的示例代码
2019/04/25 HTML / CSS
中药专业毕业自荐书范文
2014/02/08 职场文书
文化宣传方案
2014/03/13 职场文书
市场推广策划方案
2014/06/02 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
出租车拒载检讨书
2015/01/28 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
2016党员入党决心书
2015/09/22 职场文书
2016公司中秋节寄语
2015/12/07 职场文书
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
MYSQL如何查看进程和kill进程
2022/03/13 MySQL