본문 바로가기
Python/Python FAQ

Python 존재하지 않을 수도 있는 파일을 삭제하는 가장 파이썬다운 방법, Most pythonic way to delete a file which may not exist

by 베타코드 2023. 8. 5.
반응형

질문


파일 filename이 존재하는 경우에 삭제하고 싶습니다. 이를 어떻게 말해야 할까요?

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

더 좋은 방법은 있을까요? 한 줄로 처리할 수 있는 방법은 없을까요?


답변


더 파이썬스러운 방법은 다음과 같습니다:

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

이는 더 많은 줄을 사용하고 매우 못생겨 보이지만, os.path.exists()를 불필요하게 호출하지 않으며 파이썬의 관습을 따릅니다.

이 작업을 수행하는 함수를 작성하는 것도 좋을 수 있습니다:

import os, errno

def silentremove(filename):
    try:
        os.remove(filename)
    except OSError as e: # 이전에는 "except OSError, e:"였습니다 (Python 2.6 이전)
        if e.errno != errno.ENOENT: # errno.ENOENT = 파일이나 디렉토리가 없음
            raise # 다른 오류가 발생한 경우 예외를 다시 발생시킵니다
반응형

댓글