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

读取txt文件返回不可读数组且报UnicodeDecodeError错误如何解决

问题分析与恢复方案

结论

数据没有丢失,可通过二进制读取+对应反序列化方式恢复。

问题根源

你保存文件时存在两个模式匹配错误:

  • 写入时传入f.write()的a并不是格式化后的纯文本浮点字符串,而是数值数组对象序列化后的二进制字节流(从读取到的乱码特征判断,大概率是pickle序列化后的内容)
  • 你使用文本模式'w'写入二进制内容,读取时又用UTF-8文本解码,才会触发解码错误、得到乱码内容。

恢复步骤

第一步:以二进制模式读取文件原始内容

with open('file.txt', 'rb') as f:
    raw_bytes = f.read()

第二步:按原始序列化逻辑恢复数据

如果原始a是Python原生数值列表/普通可pickle对象,用pickle反序列化即可:

import pickle
recovered_data = pickle.loads(raw_bytes)

如果原始a是numpy数值数组,也可以尝试直接从字节流加载:

import numpy as np
# 如果原始数组是float32类型,把dtype改为np.float32即可
recovered_data = np.frombuffer(raw_bytes, dtype=np.float64)

后续正确保存建议

如果需要保存为人类可读的纯文本格式,不要直接写入数组对象,要先做格式化处理:

  • numpy数组可直接调用封装方法:np.savetxt('file.txt', a)
  • 原生列表可逐行转换为字符串后写入:
with open('file.txt', 'w') as f:
    for num in a:
        f.write(f"{num}\n")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:07