こしあん
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”にしよう
(もうちょっとわかりやすいエラー出して)

Related Posts

zipに固められた複数のpickleファイルを解凍なしで読み込む... Zipファイルに固められたファイル(pickleで圧縮した複数のファイル)をファイルに書き出すことなく読み込む方法を見ていきます。ディープラーニングで複数回訓練してその結果をまとめてZipに保存する、ということをよくやるので忘備録に。 infolist()でファイル一覧を読んで、pickle....
CIFAR-10/100のバイナリを画像ファイルに書き出す方法... CIFAR-10/100は画像分類として頻繁に用いられるデータセットですが、たまに画像ファイルでほしいことがあります。配布ページにはNumpy配列をPickleで固めたものがあり、画像ファイルとしては配布されていないので個々のファイルに書き出す方法を解説していきます。 コード まずは配布ページ...
Pocket
Delicious にシェア

Tags:

Add a Comment

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