pickle.load中的EOFError和找不到文件错误

时间:2017-11-29 16:54:35

标签: python-3.x pickle eoferror

:

运行以下代码会给我这个错误:

  

Traceback(最近一次调用最后一次):文件   " C:\ Users \ hello \ Desktop \ bhavi \ python programming \ Employ.py",第78行,   在       emp1 = pickle.load(fh)EOFError

在处理上述异常期间,发生了另一个异常:

  

Traceback(最近一次调用最后一次):文件   " C:\ Users \ hello \ Desktop \ bhavi \ python programming \ Employ.py",第85行,   在       os.remove(" empl.txt")FileNotFoundError:[WinError 2]系统找不到指定的文件:' empl.txt'

我现在该怎么办?

2 个答案:

答案 0 :(得分:0)

你应该修好你的道路。在第一种情况下,你写"emp1.txt";在第二个,你写"empl.txt"。如果你仔细观察,你应该注意到这两个字符串有所不同。

提示: '1' != 'l'

您的代码也可能会被重构。虽然其他人无法测试您的代码,因为它非常不完整,但以下内容应该可以正常运行。您仍需要验证它是否有效。

elif ch == 2:
    with open('emp1.txt', 'rb+') as fh, open('temp.txt', 'wb+') as fo:
        ecode = input('Enter the Ecode: ')
        while True:
            try:
                item = pickle.load(fh)
            except EOFError:
                break
            else:
                if item.ecode != ecode:
                    pickle.dump(item, fo)
    os.remove(fh.name)
    os.rename(fo.name, fh.name)
    print()

答案 1 :(得分:0)

我会使用搁架,它更容易使用,而且我的经验中没有出现很多错误。搁板是建立在泡菜上的,但它只是简化它。

这是一个简短的教程

http://python.wikia.com/wiki/Shelve