1
elif(ch==2):
    fh=open("emp1.txt","rb+")
    fo=open("temp.txt","wb+")
    ecode=input("Enter the Ecode :")
    rec=(" ")
    try:
        while True:
            emp1= pickle.load(fh)
            if (emp1.ecode!=ecode):
                pickle.dump(emp1,fh)

    except(EOFError):
        fh.close()
        fo.close()
        os.remove("empl.txt")
        os.rename("temp.txt","emp1.txt")
        print("")

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

回溯(最后一次调用):文件“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] The系统找不到指定的文件:'empl.txt'

我现在该怎么办??

4

2 回答 2

1

你应该修复你的路径。在第一种情况下,你写"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()
于 2017-11-29T20:14:23.450 回答
0

我会使用搁置,它更容易使用,并且在我的经验中它不会出现很多错误。shelve 建立在 pickle 之上,但它只是简化了它。

这是一个简短的教程

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

于 2017-11-30T15:47:21.367 回答