0

一時テキスト ファイルを作成し、ユーザーがウィンドウを閉じた後に削除するスクリプトがあります。

問題は、ユーザーの操作に応じて、一時テキスト ファイルが作成される場合と作成されない場合があることです。または、ユーザーが終了する前に一時テキスト ファイルが削除される場合があります。考えられるシナリオは 3 つあります。

  1. 一時テキスト ファイルは、'tempfilename' という名前で作成されます。
  2. 一時テキスト ファイルは「tempfilename」という名前で作成されますが、ユーザーが終了する前に削除されます。そのため、ファイルを削除しようとすると発生しますOSError
  3. 一時テキスト ファイルは作成されず、'tempfilename' という変数も作成されないため、NameError

私はこのコードを使用してみました:

try:
    os.remove(str(tempfilename))
except OSError or NameError:
    pass

しかし、それは唯一のものしか捕まえないようOSErrorです。私は何か間違ったことをしましたか?

4

2 に答える 2

0
tempfilename = None

# ...

if tempfilename is not None and os.path.exists(tempfilename):
    os.remove(tempfilename)

NameErrorコード内の他のタイプミス (例: ) を隠してしまうので、キャッチするのは良くありませんos.remov(…)

また、OSError必ずしもファイルが存在しなかったことを意味するわけではありません。Windows では、ファイルが使用中の場合、例外が発生します ( http://docs.python.org/2/library/os.html#os.remove )。その場合、問題を認識したり、別の方法で処理したりできるように、例外を確認する必要があります。

無関係なエラーやバグを隠してしまわないように、例外ハンドラはできるだけ狭くする必要があります。

于 2013-07-13T15:56:47.827 に答える