Python 8. 예외 처리와 파일

최다연·2022년 3월 12일
0

Python

목록 보기
9/10

예외처리

어떤 프로그래밍 언어에서 정해진 문법을 따르지 않는 명령이 입력되어 프로그램이 문제를 일으키는 것을 오류라고 한다.

오류의 종류와 특징

많은 프로그램에서 오류를 수행 전에 찾기 어려운 경우가 있다. 파이썬 인터프리터에서 오류 정보를 제공하고 프로그램은 오류를 역추적하여 오류가 발생한 곳에서 오류의 종류를 출력한다. 다음은 오류의 종류이다.

  • 구문오류: print()함수에서 따옴표를 빼먹는 등의 오류. 문법오류라고도 한다.
  • 값 오류
  • 인덱스 오류
  • 0으로 나누기 오류
  • 파일 가져오기 오류

예외처리

예외란 구문상의 오류는 없으나 실행 도중에 만나게 되는 오류이다. 이런 오류를 다루는 기술을 예외처리기술이라고 한다.

이 때는 try-except문의 문법을 사용한다. try절에는 예외가 발생할 우려가 있는 코드를, except 절에는 오류가 발생했을 때 처리할 내용을 담는다.

try-except문을 이용함으로써 프로그램은 갑작스럽게 종료되지 않고 사용자에게 대처할 수 있는 방법을 제시할 수 있으며 이전의 프로그램에 비해 안정적으로 작동한다.

만약 어떤 예외 상황에서 except가 실행되었는지 알고 싶을 경우 Exception as e 라는 문법을 통해 Exception 변수 e를 선언한 후 다음과 같이 e 값을 출력하면 오류의 종류를 알 수 있게 된다.

except Exception as e:
    print('error:', e)

except다음에 오류 메세지를 적어주면 해당 오류가 발생했을 때 실행할 코드를 작성할 수 있다. 여러 except구문이 있으면 위에서부터 차례대로 검사한다. 파이썬 페이지에서 내장 예외의 클래스 계층 구조를 확인할 수 있다.

try-except-else문이 있다. 예외가 발생하지 않을 경우 else문을 사용하여 그 결과값을 출력한다. else문이 가장 마지막에 와야 한다.

try-except-finally문이 있다. finally는 예외의 발생 여부와 상관 없이 항상 실행한다.

raise를 이용하여 강제로 예외 발생이 가능하다. raise문에 의해서 Exception이 발생되어 파이썬 인터프리터 프로그램이 그 과정을 추적하였다는 출력이 뜬다.

파일 입출력

파이썬에서 파일을 사용하기 위한 절차가 있다. 파일을 경로를 통해 열어서 사용목적에 따라 사용하고 마지막에는 꼭 파일을 닫아야 한다. 그 메모리를 시스템에서 사용할 수 있도록 반환해주는 것이다.

파일을 열 때는 open()이라는 함수를 사용하고 닫을 때는 close()라는 메소드를 사용한다. 파일을 열 때 경로를 설정하지 않았다면 파이썬 스크립트파일이 있는 위치의 파일을 연다. 그 뒤에 오픈모드를 설정하여 가져온다.

파일 열기

open함수는 파이썬에서 파일을 다루는 핵심 함수이다. 파일 이름과 파일 오픈 모드의 인자를 가질 수 있다. encoding이라는 인자를 통해 파일의 인코딩 형식을 지정 가능하다. 지정된 경로가 없을 경우 디폴트 경로는 파이썬 스크립트 파일이 있는 곳이 된다.

오픈 모드들이다. 기본적으로 4가지가 제공되고 +를 이용하여 추가적으로 모드를 설정할 수 있다.

이진 파일을 다룰지 텍스트 파일을 다룰지 지정하는 모드이다. 디폴트값은 t이며 b는 이진 파일 형식으로 파일을 열거나 생성한다.

파일 읽기

read()메소드를 통해서 파일을 읽어올 수 있다. 파일의 모든 문자열은 줄 바꿈에 관계없이 하나의 문자열로 반환된다. 인자로 수를 주면 그 수만큼의 문자를 읽어와서 반환한다.

readline()메소드는 줄별로 파일을 읽어올 수 있다. 우리 눈에는 보이지 않지만 줄바꿈이 일어났다면 그 뒤에는 줄바꿈문자가 포함되어있는 것이다. readline()함수는 그 줄바꿈문자까지 포함하여 읽어온다. print를 사용하여 출력한다면 readline과 print에 의해서 두 번 줄바꿈이 된다. 한 번만 줄바꿈을 하고 싶다면 end를 사용한다. 또는 rstrip()메소드를 사용하여 마지막에 나오는 문자를 삭제할 수 있다.

파일 추가하기

'a'모드를 사용한다. 추가모드로 이미 있는 파일 뒤에 새로운 내용을 입력한다. w모드는 기존의 내용을 초기화하고 내용을 삽입한다는 것과 차이가 있다.

0개의 댓글