0

次のようなコードがあります。

with open(output_path, 'w') as output_file:
    #create and write output file

これを実行すると、どこかにエラーがあっても、ファイルが作成され、不完全な状態になります。

with-block で例外が発生した (処理されていない) 場合は、ファイルを削除してください。これを行う最善の方法は何ですか?

私の理解では、(try ...)finallyステートメントでそれを実行しようとすると、例外がなくても発生しますが、exceptステートメントの後に配置すると、例外はバブルアップし続けません。やりたいこと。(例外を処理したくありません。コードの実行が停止する前にファイルを削除するだけです。)

4

1 に答える 1

0

例外ブロック内で raise を呼び出すだけで、例外を再発生させて、例外がバブルアップできるようにします。python documentation のこの関連セクションを参照してください

あなたの例では、次のようなものを書くことができます:

try:
    with open(output_path, 'w') as output_file:
        # Create and write output file.
except:
    # Delete the file.
    # Re-raise the exception with all relevant information (message, stacktrace, etc).
    raise
于 2014-10-27T04:58:31.347 に答える