手记

Python3:EOFError: Ran out of input

使用pickle.load(f)加载pickle文件时,报错:EOFError: Ran out of input.
可能原因:文件为空。
解决办法:加载非空文件。
其他解决办法:
1、加载前判断文件是否为空

import os

scores = {} # scores is an empty dict already

if os.path.getsize(target) > 0:      

    with open(target, "rb") as f:

        unpickler = pickle.Unpickler(f)

        # if file is not empty scores will be equal

        # to the value unpickled

        scores = unpickler.load()


2、捕获异常

open(target, 'a').close()

scores = {};

try:

    with open(target, "rb") as file:

        unpickler = pickle.Unpickler(file);

        scores = unpickler.load();

        if not isinstance(scores, dict):

            scores = {};

except EOFError:

    return {}


0人推荐
随时随地看视频
慕课网APP