0

pickle を使用して保存ファイルの読み取りと書き込みを行う、py 2.7 で取り組んでいる単純なゲームがあります。

私は独学で、1 週間ほど前に学習を始めたばかりです。私は通常、自分の問題の解決策をオンラインで見つけることができますが、これは達成するのに時間がかかりすぎているため、少し助けを求めています.

問題は、私がこのtry/exceptを持っていることです

        f = file("VTSave2.pkl", "rb")
        try:
            game = load(f)
            print "Game has been loaded from save 2."
        except IOError:
            pass

保存読み取りのもので。VTSave2.pkl は現在存在しません。この事実を使用して、try/except をテストしています。

適切なエラー [Errno 2] が表示されますが、IOError パサーはしゃがみません。「ロードキャンセル」の代わりに、終了プログラムとトレースバックが表示されます。

私は愚かな間違いを犯していますか?知っておくべきことはありますか?私が提供すべき情報はありますか?お時間をありがとうございました!

編集:ありがとう!それは今動作します。誰かがコードのフォーマットを「修正」しようとしていて、それを採用したときにプログラムが壊れてしまったので、誤ったクリーンアップを餌にしないように、質問に関係のないすべてのコードを取り出しました。ありがとうございました!

適切な作業コード:

    try:
        f = open("VTSave2.pkl", "rb")
        game = load(f)
        print "Game has been loaded from save 2."
    except IOError:
        pass
4

2 に答える 2

3

これは例外を発生させています

f = file("VTSave2.pkl", "rb")

の後に移動する必要があります。try:

トレースバックを注意深く読むと、その行番号で例外が発生していることがわかります。

余談:file()非推奨です。を使用する必要がありますf = open("VTSave2.pkl", "rb")

于 2012-09-24T06:23:52.787 に答える
0

あなたprint "Load cancelled."は、あなたのelseように実行されない部分にいますif

あなたはそれをリファクタリングしたいかもしれません。

于 2012-09-24T06:27:06.903 に答える