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