2017-11-29 9 views
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("") 

次のコードを実行すると、私は、このエラーを与える:pickle.loadで例外EOFError見つからないエラーファイル

Traceback (most recent call last): File "C:\Users\hello\Desktop\bhavi\python programming\Employ.py", line 78, in emp1= pickle.load(fh) EOFError

上記の例外の取り扱い時には、別の例外が発生しました:

Traceback (most recent call last): File "C:\Users\hello\Desktop\bhavi\python programming\Employ.py", line 85, in os.remove("empl.txt") FileNotFoundError: [WinError 2] The system cannot find the file specified: 'empl.txt'

私は今どうすればいい??

答えて

0

パスを修正する必要があります。最初のケースでは、"emp1.txt"と書いています。 2番目には"empl.txt"と書いています。注意深く見ると、これらの2つの文字列に違いがあることに気づくはずです。

ヒント:'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() 
0

私はshelveを使用していますが、使用するのがはるかに簡単で、多くのエラーが発生しません。棚はピックル上に作られていますが、単純化するだけです。ここ

は短いチュートリアル

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

です
関連する問題