python struct.pack方法报错argument for 's' must be a bytes object 解决

参考 https://blog.csdn.net/weixin_38383877/article/details/81100192

在python3下使用struct模块代码

fileHead = struct.pack(‘128sl‘, os.path.basename(filePath),os.stat(filePath).st_size);

抛出异常:

argument for ‘s‘ must be a bytes object必须要是字节类型。

解决办法: 
把字符串的地方转为字节类型,还要要先转成utf-8的编码(否则报错string argument without an encoding),代码如下:

fileHead = struct.pack(‘128sl‘, bytes(os.path.basename(filePath).encode(‘utf-8‘)),os.stat(filePath).st_size);

python struct.pack方法报错argument for 's' must be a bytes object 解决

原文地址:https://www.cnblogs.com/lqerio/p/11087434.html

时间: 2024-10-25 13:28:27

python struct.pack方法报错argument for 's' must be a bytes object 解决的相关文章

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\x

Spring Data JPA使用getOne方法报错:Method threw &#39;org.hibernate.LazyInitializationException&#39; exception. Cannot evaluate

getOne是懒加载,需要增加这个配置: spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true,但这种方式不太友好,建议不要使用. 解释:https://vladmihalcea.com/2016... 每次初始化一个实体的关联就会创建一个临时的session来加载,每个临时的session都会获取一个临时的数据库连接,开启一个新的事物.这就导致对底层连接池压力很大,而且事物日志也会被每次flush.设想一下:假如我们查询了

python struct.pack中的对齐字节问题

最近测试涉及到了序列字节化相关问题,碰到一个头疼的问题 buff = struct.pack("3s","B00")    print repr(buff) 输出:'B00' buff = struct.pack('i',10172) print repr(buff) 输出:"\xbc'\x00\x00" buff = struct.pack("3si","B00",10172)print repr(buf

SpringBoot关于SpringDataJpa中findOne()方法报错问题

问题描述: 首先用的SpringDataJPA的1.11版本,可以使用findOne()方法根据id查询 然后我使用了2.0.5版本,发现findOne()方法报错了,不能用来当作根据id查询了. 当使用findById(ID)进行查询的时候,页面使用Thymeleaf接收Controller出过来的数据的时候,页面接收失败. 解决办法: 使用findById(id).get()来进行查询.   原文地址:https://www.cnblogs.com/JohnEricCheng/p/87937

Flex动态获取方法报错

1.错误描述 2.错误原因 由于Flex文件修改后,需要将其编译成swf文件,刚修改的方法没有编译,再加上历史缓存的原因,导致报错 3.解决办法 将Flex项目重新clean一下,并将MyEclipse刷新一下,浏览器的缓存清除一下

C# 项目迁移 Microsoft.VisualStudio.Tools.Office.BuildTasks 生成解决方法报错:请确认 &lt;UsingTask&gt; 声明正确,该程序集及其所有依赖项都可用

1.在Server2003上使用vs2010开发的项目,移到Win8上,同样使用vs2010打开.在生成解决方案的时候有如下报错: 未能从程序集 Microsoft.VisualStudio.Tools.Office.BuildTasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 加载任务“FindRibbons”. 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包

setSupportActionBar()方法报错

在Android开发中,使用ToolBar控件替代ActionBar控件,需要在java代码中使用setSupportActionBar()方法,如下: 1 Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolBar); 2 this.setSupportActionBar(toolbar); 通常的报错有两种: 1.方法参数报错 这种报错是因为导错了类,把以下代码 1 import android.widget.Toolbar; 更换成

jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法

jQuery(function ($) { // 备份jquery的ajax方法 var _ajax = $.ajax; // 重写ajax方法,先判断登录在执行success函数 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data, textStatus) { // 如果后

捉虫经历:weblogic 下调用 getServletContext() 方法报错

原来在 tomcat 下部署的应用没什么问题,今天部署到 weblogic 下,程序跑不起来了,报错信息如下: the method getServletContext() is undefined ps:我在jsp页面中调用了this.getServletContext() 方法,在 tomcat 下没问题,但部署在 weblogic 下就报错了. 在 google 搜索框中直接输入:weblogic the method getServletContext() is undefined 然后