반응형
질문
파일 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 # 다른 오류가 발생한 경우 예외를 다시 발생시킵니다
반응형
댓글