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 struct.unpack
Sep 06 Python
详细解读Python中的__init__()方法
May 02 Python
python实现class对象转换成json/字典的方法
Mar 11 Python
Django返回json数据用法示例
Sep 18 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
python实现聊天小程序
Mar 13 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
python神经网络ResNet50模型
May 06 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判断类是否存在函数class_exists用法分析
2014/11/14 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
php-msf源码详解
2017/12/25 PHP
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
jquery trigger函数执行两次的解决方法
2016/02/29 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
Document.body.scrollTop的值总为零的快速解决办法
2016/06/09 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
Vue中的作用域CSS和CSS模块的区别
2018/10/09 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
使用Python读取大文件的方法
2018/02/11 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Python多进程池 multiprocessing Pool用法示例
2018/09/07 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python的help函数如何使用
2020/06/11 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
大学生活学习的自我评价
2013/12/03 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
秋天的雨教学反思
2014/04/27 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
Python实现日志实时监测的示例详解
2022/04/06 Python