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”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...
随机推荐
- HTMLConverter使用实例(转)
---- 本来,Applet的概念相当简单——只要在Web页面中加入一个< APPLET >标记就可以了.浏览器一遇到这个标记,就会下载对应的 Applet类文件,并启动自己的解释器运行这 ...
- INCA二次开发-MIP
1.INCA介绍 INCA是常用的汽车ECU测试和标定的,广泛应用于动力总成等领域.INCA提供了丰富的接口,供用户自动化.定制化.本公众号通过几篇文章,介绍下一些二次开发的方法,本篇介绍MIP. 2 ...
- 使用mpvue开发微信小程序
更多内容请查看 我的新博客 地址 : 前言 16年小程序刚出来的时候,就准备花点时间去学学.无奈现实中手上项目太多,一个接着一个,而且也没有开发小程序的需求,所以就一拖再拖. 直到上周,终于有一个小程 ...
- Day14 JavaScript
区分: JavaScript和JAVA一点关系没有,是一门单独的语言.(浏览器就是JavaScript的解释器) JavaScript代码存在形式: #这些代码一般都是在<head>< ...
- 【.NET Core】ASP.NET Core之IdentityServer4(1):快速入门
[.NET Core]ASP.NET Core之IdentityServer4 本文中的IdentityServer4基于上节的jenkins 进行docker自动化部署. 使用了MariaDB,EF ...
- 使用Glide以及OkHttp集成
1.glide的使用: 添加依赖: compile 'com.github.bumptech.glide:glide:3.7.0' 调用代码: ImageView imageView = (Image ...
- 选择Web框架的20条标准
原文观点由Matt Raible提出,关于Matt Rabile的介绍:http://www.infoq.com/cn/author/Matt-Raible 内容摘自<Java程序员修炼之道&g ...
- 微信公众号网页授权登录--JAVA
网上搜资料时,网友都说官方文档太垃圾了不易看懂,如何如何的.现在个人整理了一个通俗易懂易上手的,希望可以帮助到刚接触微信接口的你. 请看流程图!看懂图,就懂了一半了: 其实整体流程大体只需三步:用户点 ...
- Redis案例——商品秒杀,购物车
秒杀案例: <?php header("content-type:text/html;charset=utf-8"); $redis = new redis(); $resu ...
- istio收集Metrics和日志信息
1.切换到istio根目录 cd /data/istio/istio-0.7.1 2.安装prometheus kubectl apply -f install/kubernetes/addons/p ...