강의 복습
1. File / Exception / Log Handling
1) Exception Handling
- 예외의 종류
- 예상 가능한 예외: 사전에 인지할 수 있는 예외, 개발자가 반드시 명시적으로 정의해야 함
- 예상 불가능한 예외: 인터프리터 과정에서 발생하는 예외, 개발자 실수
- Built-in Exception: 기본적으로 제공하는 예외
- IndexError
- NameError
- ZeroDivisionError
- ValueError
- FileNotFoundError
- 예외 처리 구문
- try ~ except
- try ~ except ~ else
- try ~ except ~ finally
- raise: 필요에 따라 강제로 Exception 발생
- assert: 특정 조건에 만족하지 않을 경우 예외 발생
2) File Handling
- 파일의 종류
- Binary 파일: 이진(법) 형식으로 저장, 컴퓨터만 이해 가능, 메모장에서 내용 깨짐 ex) 엑셀파일, 워드파일 등
- Text 파일: ASCII/Unicode 문자열 형식으로 저장, 인간도 이해 가능, 메모장에서 볼 수 있음 ex) txt파일, HTML파일, 파이썬파일 등
- 파이썬은 파일 처리 위해 open 키워드 사용
- r: 읽기모드
- w: 쓰기모드
- a: 추가모드(파일의 마지막에 새로운 내용 추가)
- with ~ as 구문과 함께 사용 가능
- File Read & File Write
- read(): txt 파일 안에 있는 내용을 문자열로 반환
- readlines(): 한 줄씩 읽어 List 타입으로 반환
- write(): 파일 쓰기
3) Directory
- os 모듈
- makedir(): 폴더 생성
- pathlib 모듈
- path를 객체로 다룸
- Windows와 기타 OS(Mac, Linux)간의 호환성 높여줌
- Windows 디렉토리: WindowsPath
- 기타 OS 디렉토리: PosixPath
4) Pickle
- 파이썬의 객체를 영속화(persistence)하는 built-in 객체
- 데이터, object 등 실행중 정보를 저장 → 나중에 불러와서 사용
- 저장해야 하는 정보, 계산 결과(모델) 등 활용이 많음
5) Logging Handling
- print vs logging
- console창에만 남기는 기록은 분석시 사용 불가
- 모듈별로 별도의 logging 남길 필요도 있음
- logging 모듈
- 파이썬의 기본 로그 관리 모듈
- 프로그램 진행 상황에 따라 다른 Level의 Log를 출력함
- 개발 시점, 운영 시점마다 다른 Log가 남을 수 있도록 지원함
- debug > info > warning > error > critical
- Log 관리시 가장 기본이 되는 설정 정보
- configparser
- 프로그램의 실행 설정을 file에 저장함
- Section, Key, Value 값의 형태로 설정된 설정 파일을 사용
- 설정파일을 Dict Type으로 호출후 사용
- argparser
- Console 창에서 프로그램 실행시 Setting 정보를 저장함
- 거의 모든 Console 기반 Python 프로그램 기본으로 제공
- 특수 모듈도 많이 존재하지만(TF), 일반적으로 argparse를 사용
- Command-Line Option 이라고 부름
- Logging formatter: log 결과값의 format 지정해줄 수 있음
2. Python data handling
1) CSV (Comma Seperate Values)
- 필드를 쉼표(,)로 구분한 텍스트 파일
- 엑셀에서 '다른 이름 저장'으로 사용 가능
- 파이썬에서는 간단히 CSV 파일을 처리하기 위해 csv 객체 제공
2) 웹 & HTML
- Web (World Wide Web, WWW)
- 인터넷의 정식 명칭
- 데이터 송수진: HTTP 프로토콜 사용
- 데이터 표시: HTML 형식 사용
- 요청→처리→응답→렌더링 순서로 동작
- HTML (Hyper Text Markup Language)
- 웹 상의 정보를 구조적으로 표현하기 위한 언어
- 제목, 단락, 링크 등 요소 표시를 위해 태그(tag) 사용
- 모든 요소들은 <> 안에 둘러쌓여 있음
- 모든 HTML은 트리 모양의 포함관계를 가짐
- 일반적으로 웹 페이지의 HTML 소스파일은 컴퓨터가 다운로드 받은 후 웹 브라우저가 해석/표시
3) 정규식 (regular expression)
- 정규 표현식, regexp 또는 regex 등으로 불림
- 복잡한 문자열 패턴을 정의하는 문자 표현 공식
- 특정한 규칙을 가진 문자열의 집합 추출
- 기본 문법
- [] : [와 ] 사이의 문자들과 매치
- - : 범위 지정
- . : 줄바꿈 문자 \n 제외한 모든 문자와 매치
- * : 앞에 있는 글자
- + : 앞에 있는 글자 최소 1회 이상 반복
- {} : 반복 횟수 지정
- ? : 반복 1회
- | : or
- ^ : not
- 정규식 연습장: https://regexr.com/
RegExr: Learn, Build, & Test RegEx
RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).
regexr.com
- re 모듈
- search: 한 개만 찾기, findall: 전체 찾기
- 추출된 패턴은 tuple로 반환
4) XML (eXtensible Markup Language)
- 데이터의 구조와 의미를 설명하는 Tag(markup)를 사용하여 표시
- 태그와 태그 사이에 값 표시, 구조적인 정보 표현 가능
5) Beautifulsoup
- HTML, XML 등 Markup 언어 Scraping을 위한 대표적인 도구
- 모듈 호출: from bs4 import BeautifulSoup
- 객체 생성: BeautifulSoup()
- 패턴 찾는 함수
- find_all(): 해당 패턴 모두 반환
- find()
- get_text(): 반환된 패턴의 값 반환
6) JSON (JavaScript Object Notation)
- 원래 Javascript의 표현 방식
- 간결하고 데이터 용량이 적으며 코드로의 전환이 쉬움
- XML의 대체제로 많이 활용됨
마스터클래스 / 피어세션
오늘은 마스터클래스가 있는 날이었다. 마스터가 학생들의 질문을 모아서 답변해주는 형식으로 진행되었는데 역시 AI에 대한 질문이 많았고 그 외에 학습 방향, 프로그래밍 개념 등에 대한 질문들도 있었다. 좋은 질문과 답변들이 많았는데 그중 가장 인상 깊었던 건 주식을 하면서 세상이 어떻게 돌아가는지 배우라는 것이었다.
오늘 피어세션에서 발표한 내용은 자바와 파이썬의 visibility를 비교하는 것이었다. 학교에서 자바로 객체지향 프로그래밍을 배웠었는데 파이썬 객체지향을 공부하면서 차이점을 비교해보면 좋을 것 같아서 이 주제를 선정했다. 급하게 준비하느라 내용이 많이 부실한데 나중에 파이썬에서 __로 private 선언하는 것에 대해 더 깊이 있게 정리하고 오버라이딩과 오버로딩에 대해서도 추가로 정리해야겠다.
코멘트
오늘 강의 내용은 프로그래밍 할 때, 특히 데이터를 다룰 때 알아둬야 할 것들이었다. pathlib과 logging모듈, pickle, configparser와 argparser 등 생소한 내용이 좀 있었다. 특히 pathlib은 디렉토리 다룰 때 굉장히 유용해 보인다. 그리고 정규식은 배울 때마다 항상 생소하고 배워도 배워도 끝이 없는 것 같다.
어느새 부스트캠프 첫 번째 주가 끝났다. 정신없이 한 주가 지나간 것 같다. 다음주에는 매일 과제와 퀴즈가 있다고 하는데 걱정된다. 주말동안 이번주에 배운 내용을 복습하고 다음주에 배울 내용도 미리 예습해놔야겠다.
'부스트캠프 AI Tech 1기 [T1209 최보미] > U stage' 카테고리의 다른 글
Day7 학습정리 - 경사하강법 (0) | 2021.01.26 |
---|---|
Day6 학습정리 - Numpy / 벡터 / 행렬 (0) | 2021.01.25 |
Day4 학습정리 - 파이썬 기초 문법 III (0) | 2021.01.21 |
Day3 학습정리 - 파이썬 기초 문법 II (0) | 2021.01.20 |
Day2 학습정리 - 파이썬 기초 문법 (0) | 2021.01.19 |