1. ホーム
  2. python

[解決済み] 存在しないかもしれないファイルを削除するための最もpythonicな方法

2022-03-18 08:50:31

質問

ファイルを削除したい filename が存在する場合。 というのは適切でしょうか?

if os.path.exists(filename):
    os.remove(filename)

もっと良い方法はないでしょうか?一行で済む方法は?

どのように解決するのですか?

もっとピシッとした方法だと

try:
    os.remove(filename)
except OSError:
    pass

これはさらに行数を増やし、見た目も非常に不格好ですが、不要な os.path.exists() そして、例外を使いすぎるという Python の慣例に従います。

これを代行する関数を書いておくといいかもしれませんね。

import os, errno

def silentremove(filename):
    try:
        os.remove(filename)
    except OSError as e: # this would be "except OSError, e:" before Python 2.6
        if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
            raise # re-raise exception if a different error occurred