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

SMI转PKL文件报错:UnpicklingError问题排查与解决建议

问题解决建议

错误根源

你遇到的UnpicklingError是因为.pkl文件里存储的不是pickle序列化的有效数据,而是.smi文件的文本内容(或错误对象)。你的转换代码直接把文件路径字符串file_pathdump到了pkl文件里,完全没有读取.smi文件的实际内容,这是核心问题。

修正后的转换代码

先读取.smi文件的内容(按行解析,拆分SMILES字符串和对应的标识),再序列化到.pkl文件:

import pickle as pkl

# 读取.smi文件内容
smiles_dataset = []
with open("你的smi文件路径.smi", "r", encoding="utf-8") as smi_f:
    for line in smi_f:
        line = line.strip()
        if not line:
            continue
        # 拆分SMILES字符串和后面的标签(按第一个空格分割)
        smiles_str, tag = line.split(maxsplit=1)
        smiles_dataset.append({"smiles": smiles_str, "tag": tag})

# 写入.pkl文件
with open("输出的pkl文件路径.pkl", "wb") as pkl_f:
    pkl.dump(smiles_dataset, pkl_f, protocol=pkl.HIGHEST_PROTOCOL)

正确的加载代码

import pickle as pkl

with open("你的pkl文件路径.pkl", "rb") as f:
    qm9_smiles = pkl.load(f)

额外注意事项

  • 先删除之前生成的错误.pkl文件,避免覆盖问题
  • 如果.smi文件的行格式和示例不同(比如分割符不是空格),需要调整split的逻辑适配你的文件格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:57:00