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

Posted lqerio

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 解决的主要内容,如果未能解决你的问题,请参考以下文章

Python学习——struct模块的pack unpack示例

Python struct.pack() 行为

qt中如何解包利用python 的struct.pack()函数打包的数据

Python里 int 和 bytes互转的方法

msgpack可以提供更好的性能和相同的python的struct.pack()功能吗?

msgpack 能否提供更好的性能和与 python 的 struct.pack() 相同的功能?