こしあん
2018-09-24

pickle.loadで読み込み時にUnicodeDecodeError

Pocket
LINEで送る


pickle.dump()で保存は上手く行ったのに、それを読み込むとエラー吐いて原因がよくわからない……それで一時間近くハマったという恐怖な話。

pickle.load()で読み込むとこのようなエラーが出るおかしい。マルチバイト文字なんか入れていないのに。

UnicodeDecodeError: ‘cp932’ codec can’t decode byte 0x85 in position 81: illegal
multibyte sequence

原因:openでの読み込みモードが”rb”ではなく”r”だった

原因は単純でバイナリモードで読み込まなかったから。1時間ぐらいしてこれ気づいたときは殴りたくなった。

with open("picklefile.dat", "r") as fp:
    data = pickle.load(fp)

教訓:pickleを読み込むときは”r”ではなく”rb”にしよう
(もうちょっとわかりやすいエラー出して)

Pocket
Delicious にシェア

Tags:

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です