[파이썬 배우기] 3. 파일과 예외

Posted on Updated on

  • 데이터는 프로그램 바깥에 있다
  • 파일은 단지 여러 라인으로 구성된 텍스트
  • 데이터를 자세히 알아보자 : split
  • 데이터 분석: 런타임에러가 나는 구문 확인
  • 메서드를 알아보기 위해 help
  • 데이터를 더 잘 파악하자: need more than 1 value to unpack
  • 전혀 다른 두 방법
  • 프로그램 논리 추가: find
  • 예외처리하기
  • 먼저 실행하고, 나중에 복구하기: try except
  • 에러가 발생하면 지나가세요
  • 또다른 에러는 ? : 파일 없어진 경우 처리
  • 에러 확인 코드 추가
  • .. 또는 예외 처리에 한 단계 추가
  • 특정 예외만 처리하자

open()


iterator가 만들어짐 – 나중에 배울 것이고 일단 열고 닫는 데에는 다음과 같은 코드를 사용

myFile = open('input.txt')   # 파일 열기
myFile.close()               # 닫기

파일 열고 닫기 실습


input.txt

1번째 줄입니다.
2번째 줄이군요.
블로깅 하면서 배우는 즐거운 행복물건개발자

uartis.py

import os
print(os.getcwd())            # 현재 폴더 위치 표시
os.chdir('/Python34/uartis/') # 폴더 위치 변경
print(os.getcwd())            # 잘 변경됐는지 확인

myFile = open('input.txt')
print(myFile.readline(), end='') # 1번째 줄입니다.
print(myFile.readline(), end='') # 2번째 줄이군요.
print(myFile.readline(), end='') # 블로깅 하면서 배우는 즐거운 행복물건개발자

myFile.seek(0)  # 파일의 가장 처음 부분으로 돌아갑니다

for each in myFile:
    print(each, end='')   # 한 줄씩 출력합니다

myFile.close()  # 파일 모두 사용 후 닫기

split() 메서드 사용하기


input.txt

A: 1번째 줄입니다.
B: 2번째 줄이군요.
A: 블로깅 하면서 배우는 즐거운 행복물건개발자

python 인터프리터에서…

data = open('input.txxt')
for each in data:
      (role, spoken) = data.split(':'):
      print(role, end='')
      print(' said: ', end='')
      print(spoken, end='')
A said: 1번째 줄입니다.
B said: 2번째 줄입니다.
...

split 은 제시어를 기준으로 문장을 쪼개서 각각에게 할당해 준다

이상한 경우 발생! 콜론이(:) 두 개 이상일때


오류가 발생함 : too many values to unpack

help를 사용하자


find() 메서드도 있다


찾으면 그 곳의 index 를 리턴한다. 못찾으면 -1 을 리턴한다

data.find(':')

예외 처리하자


파이선에서는 런타임 에러를 예외(exceptions) 라고 부른다. 그리고 예외를 무시하면 크래시된다. 예외를 잡을 수 있게 해 준다. 일단 코드 실행하고, 예외가 발생하면 그제서야 잡는다!

try:
exception:
pass   # 에러가 생기면 이쪽으로 옵니다. 그리고 pass 를 만났으니 지나가겠군요

보호할 코드를 알아내자

왜 예외처리를 하는 것이 좋을까?


코드가 할 일에 집중할 수 있다.

진짜 걱정해야 할 에러 : IOError, ValueError


특정 에러만 처리하도록 할 필요가 있다.


try:
# 블라블라
except ValueError:
#처리구문

try:
# 블라블라
except IOError:
#처리 구문

Tip & 정리


Tuple : (소괄호로 싸인다) :  불변형 리스트, 즉, 리스트이긴 하지만 일단 한 번 만들어지면 바꿀 수 없다. 즉, 상수 리스트라고 생각할 수 있다.

open() # 파일을 연다
readlien() # 한 라인을 읽는다
seek(0) # 파일의 맨 처음으로 되돌릴 수 있다
close() # 파일을 닫는다
find() # 특정 문자열을 찾는다
not # 조건을 반대로 만든다
try:   #
catch: # 런타임 에러에 대한 보호
pass   # 아무런 처리를 하지 않는다


* 본 글은 ‘헤드퍼스트 파이썬’ 한빛미디어의 책을 학술 목적으로 인용하였습니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중