더북(TheBook)

14.5 예외를 잡기

파일을 읽거나 쓰려고 하면 잘못될 수 있는 게 많다. 있지도 않은 파일을 열려고 한다면 IOError가 발생한다.

>>> fin = open('bad_file')

IOError: [Errno 2] No such file or directory: 'bad_file'

파일에 접근 권한이 없다면 PermissionError가 발생한다.

>>> fout = open('/etc/passwd', 'w')

PermissionError: [Errno 13] Permission denied: '/etc/passwd'

읽기에서 디렉터리를 열려고 하면 IsADirectoryError가 발생한다.

>>> fin = open('/home')

IsADirectoryError: [Errno 21] Is a directory: '/home'

이런 오류를 피하려면 os.path.existsos.path.isfile 같은 함수를 사용해야 하지만, 이런 오류 가능성을 모두 검사하려면 많은 코드와 시간이 필요하다(Errno 21이 표시되면 최소한 21가지 이상에 문제의 가능성이 있다는 뜻이다).

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.