【发布时间】:2019-03-27 21:41:15
【问题描述】:
我正在尝试在由“已解析”.csv 文件构建的 .pkl 文件上使用 cPickle。使用预先构建的 python 工具箱进行解析,该工具箱最近已从 python 2 (https://github.com/GEMScienceTools/gmpe-smtk) 移植到 python 3
我使用的代码如下:
from smtk.parsers.esm_flatfile_parser import ESMFlatfileParser
parser=ESMFlatfileParser.autobuild("Database10","Metadata10","C:/Python37/TestX10","C:/Python37/NorthSea_Inc_SA.csv")
import cPickle
sm_database = cPickle.load(open("C:/Python37/TestX10/metadatafile.pkl","r"))
它返回以下错误:
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 44: character maps to <undefined>
据我所知,我需要指定 .pkl 文件的编码以使 cPickle 能够工作,但我不知道解析 .csv 文件生成的文件的编码是什么,所以我可以'目前不使用 cPickle。
我用 sublime text 软件发现是“十六进制”,但这不是 Python 3.7 接受的编码格式,不是吗?
如果有人知道如何确定所需的编码格式,或者如何使十六进制编码在 Python 3.7 中可用,我们将不胜感激。
附:诸如“ESMFlatfileparser”之类的模块是预先构建的工具箱的一部分。考虑到这一点,我是否可能需要在此模块中以某种方式更改编码?
【问题讨论】:
标签: python encoding deserialization pickle