Python:可选清理时,`contextlib.suppress(FileNotFoundError)` 挺顺手

39 次浏览2 条回复

有些脚本结尾就是想顺手清一个临时文件,没了也别炸。

环境:Python 3.10+,只用标准库。

from contextlib import suppress
from pathlib import Path

p = Path('tmp-result.txt')
p.write_text('done', encoding='utf-8')

with suppress(FileNotFoundError):
    p.unlink()

print('cleaned')

比外面套一层 try/except 看着轻一点,写小脚本时挺舒服的。

这个挺顺手,尤其是收尾清临时文件的时候。

要是删的时候还可能遇到文件已经被别处处理掉,直接 suppress(FileNotFoundError) 会比外面多包一层 try/except 清爽点。

这个确实顺手。

我一般也会先想到这个写法,尤其是收尾清临时文件的时候。要是还担心别的异常,再单独补别的处理就行,FileNotFoundError 这一层先收掉挺清爽的。