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

从压缩包读取CSV写入NamedTemporaryFile后打印为空如何解决?

问题原因

  • 核心错误为文件指针位置错位:执行writelines写入内容完成后,文件指针处于文件末尾位置,此时直接遍历文件对象会从末尾开始读取,无内容返回,因此输出为空。
  • 存在冗余操作:NamedTemporaryFile实例化后本身就返回可直接读写的文件对象,不需要额外通过temp_file.name二次打开,二次打开还可能在Windows环境下触发文件占用权限错误。

修复后可运行代码

import zipfile
from tempfile import NamedTemporaryFile

with zipfile.ZipFile(file_name) as zip_fp:
    for item in zip_fp.namelist():
        # 直接创建wb+模式的临时文件,自动管理生命周期
        with NamedTemporaryFile(mode='wb+') as temp_fp:
            with zip_fp.open(item) as fp:
                temp_fp.writelines(fp.readlines())
            # 写入完成后将指针移动到文件起始位置再读取
            temp_fp.seek(0)
            for line in temp_fp:
                print(line)

如果需要读取为字符串格式而非字节,可将临时文件模式改为'r+',并指定对应编码参数,写入时将字节内容解码后写入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:33:00