私は特にtempfile
ライブラリを使用して作成された一時ファイルで動作するプログラムを作成しています。プログラムが失敗した場合、Pythonは一時ファイルを削除しません。
一時ファイルが作成され、機能を埋め:
def func():
mod_script = tempfile.NamedTemporaryFile(dir='special')
dest = open(mod_script, 'w')
# filling dest
return mod_script
(私はfunc()
を呼び出した後、一時ファイルを実行するので、私はopen()
なくwith open()
を使用)
func()
外mod_script
といくつかの操作をした後、私はmod_script.close()
に電話してください。そして、すべて正常に動作します。
しかし、私には1つの問題があります。私のプログラムが失敗した場合(または中断した場合)、一時ファイルは削除されません。
どうすれば修正できますか?
私は実際にはtry...except...finally
句を書いたくありません。なぜなら、何度も書く必要があるからです(私のプログラムが失敗するところがたくさんあります)。
なぜファイルを削除してから例外を再発生させるのが目的なら、どこにでもtry/except/finallyを書かなければならないのはなぜですか?例外をバブルアップさせて、コードの最外層をtryでラップすることができないのはなぜですか?あるいは、終了時にファイルを削除するコンテキストマネージャーを書いてください。 – timgeb
"func()を呼び出した後に一時ファイルを実行するため、open()を使用し、open()を使用しません" - ハァッですか?私はあなたの推論を理解していません。精巧な –
'mod_script'を返すと、私は多くの場所でそれを使用します。私のプログラムは、最初に 'mod_script'を使う前、' n'stと 'n + 1'stの間で失敗する可能性があります。' func() 'を' try ... except'して追加すると、状況。 – VeLKerr