You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中将Zip文件转为类字节对象时遇TypeError的问题咨询

解决打开Zip文件并转为类字节对象时的TypeError问题

错误原因

你碰到的 TypeError: a bytes-like object is required, not 'list' 是因为用了 f.readlines() 方法——这个方法会把文件按行读取,返回字节列表,而 base64.b64encode 和 io.BytesIO 都要求传入单个的字节对象,不是列表类型。

正确代码示例

1. 将Zip文件转为类字节对象并做Base64编码

import base64

with open("results.zip", 'rb') as f:
    # 用read()读取整个文件,得到单个bytes对象
    data = f.read()
    encoded = base64.b64encode(data)

2. 读取Zip文件内的内容

注意要导入io模块,之前的代码漏了这一步:

import zipfile
import io

with open("results.zip", 'rb') as f:
    data = f.read()  # 获取完整的字节流
    zf = zipfile.ZipFile(io.BytesIO(data), "r")
    for fileinfo in zf.infolist():
        print(zf.read(fileinfo).decode('ascii'))

关键注意点

  • 替换 f.readlines() 为 f.read():前者返回每行字节组成的列表,后者返回整个文件的单个bytes对象,这才是方法需要的「类字节对象」
  • 所有依赖字节流的操作(Base64编码、BytesIO包装)都必须传入单个bytes对象,不能用列表

内容的提问来源于stack exchange,提问作者PythonKiddieScripterX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:50:36