python struct.pack() 二进制文件,文件中打包二进制数据的存储与解析
学习Python的过程中,遇到一个问题,在《Python学习手册》(也就是《learning python》)中,元组、文件及其他章节里,关于处理二进制文件里,有这么一段代码的处理:
>>>F=open('data.bin','wb')
>>>import struct
>>>data=struct.pack('i4sh',7,'spam',8)
>>>data
b'\x00\x00\x00\x07spam\x00\x08'
>>>F.write(data)\
>>>F.close()
实际上,无论是在python 2.x 或 3.x中,执行第三步data=struct,pack(...)时,输出会报错,报错:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
data=struct.pack('>i4sh',7,'spam',8)
struct.error: argument for 's' must be a bytes object
查看帮助文档,可以看到介绍:
ructstruct.
pack
(fmt, v1, v2, ...)
Return a bytes object containing the values v1, v2, � packed according to the format string fmt. The arguments must match the values required by the format exactly.
格式化字符串的值再Python中的类型是bytes类型,所以我们需要做处理。→在bytes类型前面加上一个b可以解决这个问题。
>>>data=struct,pack('>i4sh',7,b'spam',8)
b'\x00\x00\x00\x07spam\x00\x08'
到此问题解决!
struct.pack(fmt,v1,v2..),fmt是一种Linux命令,功能是编排文本文件。具体操作,此处不做过多记录。
# 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
顺便再做下‘>i4sh’的介绍,它在C数据结构和Python中的数据结构:
i-->int-->integer--->7
4s-->char-->string--->'spam'
h-->unsigned short-->integer-->8
python struct.pack() 二进制文件,文件中打包二进制数据的存储与解析的更多相关文章
- 借助python工具从word文件中抽取相关表的定义,最后组装建表语句-非常好
借助python工具从word文件中抽取表的定义,最后组装建表语句-非常好 --如有转载请以超链接的方式注明原文章出处,谢谢大家.请尊重每一位乐于分享的原创者 1.python脚本 ## -*- co ...
- 认识Js中的二进制数据
Blob 在项目中涉及到要对html原生的audio组件进行样式复写,因此需要重新实现audio的一些功能,比如下载.实现一个下载大致的思路是服务端返回一段音频的二进制数据,客户端将其存放在Blob中 ...
- Tensorflow 从文件中载入训练数据
本节包含: 用纯文本文件准备训练数据 加载文件中的训练数据 一.用纯文本文件准备训练数据 1.数据的数字化 比如,“是” —— “1”,“否” —— “0” “优”,“中”,“差” —— 1 2 3 ...
- 从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中
//从视频文件中读入数据-->将数据转换为灰度图-->对图像做canny边缘检测-->将这三个结构显示在一个图像中 //作者:sandy //时间:2015-10-10 #inclu ...
- 代码实现将键盘录入的数据拷贝到当前项目下的text.txt文件中,键盘录入数据当遇到quit时就退出
package com.looaderman.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; ...
- python struct.pack中的对齐字节问题
最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00") print repr(buff) 输 ...
- python从Microsoft Excel文件中导入数据
excel中后缀为csv和xls,二者区别如下:1.xls 文件就是Microsoft excel电子表格的文件格式.2.csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中. ...
- Python: 程序print到文件中
Python 3.x 将输出内容写入到一个文件,需要两个命令.open指明Python用什么文件名,w 意味着我们要写入该文件, encoding=”utf-8″指明Python如何把中文写入该文件. ...
- python调用另一个文件中的代码,pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题
如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...
随机推荐
- redis分布式锁实践
分布式锁在多实例部署,分布式系统中经常会使用到,这是因为基于jvm的锁无法满足多实例中锁的需求,本篇将讲下redis如何通过Lua脚本实现分布式锁,不同于网上的redission,完全是手动实现的 我 ...
- Django和Angular.js模板标签冲突的解决方式
参考文章:http://yanhua365.lofter.com/post/b417f_1f0361 http://stackoverflow.com/questions/8302928/angula ...
- txtbook简单HTML可读化改造
一般来讲下载的txtbook在notepad或者之类的文本编辑器下的阅读体验不是很好,PC上面专门装个txt阅读器好像有点杀鸡用牛刀,可以用HTML简单处理一下就可以放在浏览器下爽快的阅读了,这个操作 ...
- 利用HTML5,前端js实现图片压缩
http://blog.csdn.NET/qazwsx2345/article/details/21827553 主要用了两个HTML5的 API,一个file,一个canvas,压缩主要使用cnav ...
- 与班尼特·胡迪一起拿奖学金(HZNU-2273)
与班尼特·胡迪一起拿奖学金 AC Time Limit: 2 s Memory Limit: 256 MB Description 班尼特·胡迪这学期的体测终于上80分了,当期末考试的 ...
- springboot中使用分页,文件上传,jquery的具体步骤(持续更新)
分页: pom.xml 加依赖 <dependency> <groupId>com.github.pagehelper</groupId> <arti ...
- 微信小程序-框架详解(1)
配置 -app.json文件对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.tab等 { "pages": [ //决定页面文件的路径 "pag ...
- eclipse 安装svn和gradle
公司项目用的eclispe svn和gradle 所以需要配置 SVN教程:https://blog.csdn.net/jieshaowang1229/article/details/5159499 ...
- Python3 urllib.request库的基本使用
Python3 urllib.request库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urlli ...
- 第二届强网杯部分writeup
MD5部分 第一题 一看就有些眼熟 emmmm 查看一下源代码: 重点是这里 这里面要求POST上去的参数 param1 != param2 && md5('param1') == m ...