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

读取游戏导出的两款.pkl文件时遭遇不同Pickle反序列化错误求助

游戏Dump的.pkl文件读取问题

我有两个游戏Dump出来的.pkl文件,想把它们读取成纯文本,但不清楚文件结构(生成这些Dump的程序没做转换)。我用的代码如下:

import pickle
import pprint

obj = pickle.load(open("encounter_fixed_paldea.pkl", "rb"))

with open("out.txt", "a") as f:
    pprint.pprint(obj, stream=f)

读取encounter_fixed_paldea.pkl时的错误

Traceback (most recent call last):
  File "C:\Users\haily\OneDrive\Desktop\Files\test.py", line 4, in <module>
    obj = pickle.load(open("encounter_fixed_paldea.pkl", "rb"))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_pickle.UnpicklingError: invalid load key, '\x19'.

读取encounter_wild_paldea.pkl时的错误

Traceback (most recent call last):
  File "C:\Users\haily\OneDrive\Desktop\Files\test.py", line 4, in <module>
    obj = pickle.load(open("encounter_wild_paldea.pkl", "rb"))
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_pickle.UnpicklingError: unpickling stack underflow

注:encounter_wild_paldea.pkl大小为90KB,encounter_fixed_paldea.pkl大小为9KB。


解决思路

  • 这些文件不是标准Python pickle格式:游戏Dump的文件常自定义序列化规则,只是用了.pkl后缀,和Python原生pickle无关。
  • 分析文件字节特征:用十六进制编辑器(如HxD)打开文件,对比标准pickle的开头字节(标准pickle通常以\x80加版本号开头,比如\x80\x04对应Python 3.4+),判断是否为自定义格式。
  • 查找游戏专属解析工具:从文件名看这是宝可梦朱紫帕底亚地区的遭遇数据,社区大概率有现成的解析项目或格式文档,可针对性搜索。
  • 检查预处理需求:部分Dump文件可能经过加密、压缩或字节序转换,可尝试检查是否有压缩特征(如GZIP的\x1f\x8b开头),或调整字节序后再尝试读取。
  • 用pickletools排查:如果文件包含部分pickle格式内容,可尝试用pickletools反汇编字节码,获取部分结构信息:
    import pickletools
    with open("encounter_fixed_paldea.pkl", "rb") as f:
        pickletools.dis(f)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:23:14