Python handling
Exception & File &Log Handling
Exception Handling
- 프로그램 사용시에는 예상치못한 예외가 생김
예상이 가능한 예외
- 발생여부를 사전에 인지하여
- 개발자가 명시적으로 처리해주어야 함
예상이 불가능한 예외
- 인터프리터 과정에서 일어나는 예외
- 수행불가시 인터프리터가 자동호출
예외처리
—> Exception Handling
Try except 문법
ex) 0으로 나눌떄 exception 발생
1 | try: |
되도록이면 exception을 명확하게 잡아 가독성을 높혀라
- else 구문을 사용할시 예외가 발생하지 않을시 실행
- finally 예외 발생여부와 상관없게 항상 실행되는 구문을 추가
Raise 구문
- 필요에 따라 강제로 exception을 발생
1 | while True: |
Assert 구문
사전에 사용자에게 특정조건이 맞는지 조건을 넣어주고 False일때 error를 발생시켜줌
assert isinstance(decimal_number, int)
File Handling
파일의 종류
- 기본적인 파일종류로 text file, binary file로 나뉨
- 컴퓨터는 text file을 처리하기 위해 binary로 변환시킴
Binary file
이진법을로 나타내져 있음
메모장으로 열면 깨짐
엑셀파일 워드파일 등등
Text file
인간도 이해가능한 문자열로 이루어짐
메모장으로 열면 확인 가능
Python File I/O
1 | f = open("같은 폴더의 파일", "r") |
r : 읽기 모드
w : 쓰기 모드
a : 추가 모드
with 구문과 함께 사용하기
인덴테이션이 일어나는 동안에는 with줄의 코드가 다 적용이됨
인덴테이션이 종료가 되면 close가 됨
로그를 남겨야할 필요가 있음
1 | f = open("i_have_a_dream.txt","r") |
Logging 모듈
print문이랑 비슷
Python data handling
- CSV-
- 웹(html)
- xml
- json
CSV(Comma Separate Value)
- 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식이라고 생각하면 쉬움
- TSV,SSV등으로 구분해서 만들기도 함
notepad로도 열 수 있고, 쉼표로 구분이 되어있다.
위에서 data_header라는게 있다.
여기에는 데이터의 필드가 담겨있ㅇ며 데이터 저장시 ,로 분리를 하는 코드이다
첫번째 data는 무조건 data의 필드이다 ex) data,index이런 느낌으로 카테고리이다
따라서 첫줄이라면 ,로 나누어서 data_header라는 리스트에 저장해준다
이후 줄부터는 ,로 나누어서 한줄씩 리스트에 저장해준다
text파일 형태로 데이터 처리시 문장내에 들어가있는 “,” 등에 대해 전처리 과정이 필요하다
파이썬에서는 간단히 CSV파일을 처리하기 위해 csv객체를 제공함
1 | import csv |
- delimiter : 글자를 나누는 기준 (default : ‘,’ )
- lineterminator : 중바꿈기준 (default : \r\n)
- quotechar : 문자열을 둘러싸는 신호 문자 (default : “ )
- quoting : 데이터를 나누는 기준이 quotechar에 의해 둘러싸인 라벨
1 | import csv |
위는 유동인구 데이터중 성남의 데이터만을 수집하는 코드이다
window에서 관리되는 코드는 cp949이다
vscode는 utf8이기 떄문에 encoding을 바꾸어 주어햐 한다
따라서 읽을 때 cp949로 읽는다고 별도로 지정한다
encoding은 cp949,
utf8로 왠만하면 저장하기 왠만하면 작은 ‘ 이걸로 나누고
보통 csv는 다른도구를 사용하기 때문에 지금은 이거에 집착할 필요가 없다 왠만하면 pandas를 사용하기 때문에
Web
- 데이터 송수신을 위한 HTTP 프로토콜 사용
- 데이터 표시를 위한 HTML 형식 사용
HTML
- HTML의 모든 요소들은 꺾쇠 괄호안에 둘러 쌓여 있음
- 모든 HTML은 트리모양의 포함관계를 가짐
왜 HTML을 알아야 하는가?
HTML도 일종의 프로그램으로, 규칙을 분석하여 데이터의 추출이 가능하다
추출된 데이터를 바탕으로 하여 다양한 분석이 가능
Regular Expression
- 정규 표현식
- 복잡한 문자열 패턴을 정의하는 문자 표현 공식
- 특정한 규칙을 가진 문자열의 집합
- HTML역시 tag를 사용한 일정한 형식이 존재하기 때문에 정규식으로 추출하기가 편함
- 문법이 방대하여 그떄 그때 검색이 필요
- 기본적인것만 일단 숙지하자
XML
- 데이터의 구조와 의미를 설명하는 tag를 사용하여 표시하는 언어(like html)
- XML은 컴퓨터(PC <-> 스마트폰)간의 정보를 주고받기 매우 유용한 저장방식으로 쓰이고 있음
- 정규 표현식으로 Parsing이 가능함
- 그러나 가장 많이 쓰이는 parser인 beautifulsoup
BeautifulSoup
- 언어 Scraping을 위한 도구
- 느리지만 간편하다
JSON
- javaScript object Notation
- 웹언어인 Java Script의 데이터 객체 표현 방식
- 간결하다
- 데이터 용량이 적고 Code로 전환이 쉽다
- 따라서 XML을 대체하고 있다
Python의 DIct Type과 유사, Key:Value값으로 접근가능
Json in Python
대부분의 사이트에서 정보교환시 JSON을 사용한다
데이터 저장과 읽기는 dict type과 상호호환 가능