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

打包AWS Lambda:写入磁盘的Zip正常,写入内存却为空?原因何在?

为什么用BytesIO创建Zip后读取得到空字节对象?

问题出在文件指针的位置上:

  • 当你用with zipfile.ZipFile(zipfile_obj, "w")创建Zip时,with块结束会自动调用ZipFile的close()方法,这个过程会把Zip的收尾数据(比如目录结构)写入BytesIO,同时BytesIO的文件指针会停在整个数据的末尾。
  • 这时候直接调用zipfile_obj.read(),会从指针当前位置(末尾)开始读取,自然只能得到空字节。

而你用本地文件的方式时,是重新打开了文件,新打开的文件默认指针在起始位置,所以能正常读到全部内容。

解决方法

只需要在读取BytesIO之前,把文件指针移到起始位置即可:

zipfile_obj = BytesIO()

with zipfile.ZipFile(zipfile_obj, "w", zipfile.ZIP_DEFLATED) as zf:
    zipdir(local_lambda_directory, zf)

zipfile_obj.seek(0)  # 将指针重置到文件开头
zipped_lambda = zipfile_obj.read()

这样就能获取到完整的Zip字节数据,用于boto3上传AWS Lambda了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:13