1주차 학습정리_2

Simbean·2021년 8월 5일

Module and Project

__init__ = 현재 폴더가 패키지임을 알리는 초기화 스크립트. 하위 폴더와 py파일을 모두 포함한다.
__all__ = 해당 모듈의 공용 객체 목록을 선언

__all__ = [모듈 1, 모듈 2, 모듈 3,...]

가상환경 : 프로젝트를 진행할 때 필요한 패키지만 설치하는 새로운 환경을 뜻함.
              주로 다양한 패키지 관리 도구를 사용한다
python의 가상환경을 만들기 위한 도구는 대표적으로 virtualenv와 conda가 있다

virtualenvconda
<가장 대표적인 가상환경 관리 도구
pip를 사용하기 때문에 래퍼런스와 패키지 사용에 굉장히 유용하다
상용 가상환경도구, miniconda 기본 도구,
windows에서 더 유용하게 사용 가능하다.

File / Exception / Log Handling

Exception 이름내용
IndexErrorList의 범위를 넘어갈 때
NameError존재하지 않은 변수를 호출할 때
ZeroDivisionError0으로 숫자를 나눌 때
ValueError변환할수 없는 문자 / 숫자를 변환할 때
FileNotFoundError존재하지 않는 파일을 호출할 때

기타 에러들

  • 문법

try ~ except ~finally

try:
	내용
except 에러 이름:
	~예외처리
finally:
	예외 발생 여부와 상관없이 실행

raise 예외로 뺄 이름 : 강제로 Exception을 발생

~~~~
if ~~~조건:
	raise ~(IndexError, ValueError)~~~~

assert 예외조건 : 특정 조건에 만족하지 않을 경우 예외 발생```python

~~~~
assert 조건
~~~~
#조건 불만족시 AssertionError 발생
  • Logging

프로그램 진행 상황에 따라 다른 Level의 Log를 출력함
시점, 운영 시점 마다 다른 Log가 남을 수 있도록 지원함
DEBUG -> INFO -> WARNING -> ERROR -> Critical 순으로 심각함

Level내용
DEBUG개발시 처리 기록을 남겨야하는 로그 정보를 남김
INFO처리가 진행되는 동안의 정보를 알림
WARNING사용자가 잘못 입력한 정보나 처리는 가능하나 원래 개발시 의도치 않는 정보가 들어왔을 때 알림
ERROR잘못된 처리로 인해 에러가 났으나, 프로그램은 동작할수 있음을 알림
Critical잘못된 처리로 데이터 손실이나 더이상 프로그램이 동작할 수 없음을 알림

실제 프로그램을 실행할 땐 여러 설정이 필요한데, 이러한 정보를 설정해줄 방법이 필요하다.

  • 파일에 프로그램 실행 설정을 저장함 - configparser

Section, Key, Value 값의 형태로 설정된 설정 파일을 사용한다.
설정파일을 Dict Type으로 호출후 사용한다.

  • Console 창에서 프로그램 실행시 Setting 정보를 저장함. - argparser

특수 모듈도 많이 존재하지만, 일반적으로 argparse를 사용한다.
Command-Line Option이라고 부른다.

Python data handling

  • Comma Separate Value

CSV, 필드를 쉼표(,)로 구분한 텍스트 파일이다.
엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한데이터 형식이라고 생각하면 쉽다.
통칭하여 character-separated values (CSV)라고 부른다.

  • Web
    World Wide Web(WWW), 줄여서 웹이라고 부름
    우리가 늘 쓰는 인터넷 공간의 정식 명칭
    팀 버너스리에 의해 1989년 처음 제안되었으며,원래는 물리학자들간 정보 교환을 위해 사용됨
    데이터 송수신을 위한 HTTP 프로토콜을 사용하고, 데이터를 표시하기 위해 HTML 형식을 사용

    • HTML
      웹 상의 정보를 구조적으로 표현하기 위한 언어
      모든 요소들은 꺾쇠 괄호 안에 둘러 쌓여 있는 것이 특징이다.
  • XML

데이터의 구조와 의미를 설명하는 TAG(MarkUp)를 사용하여 표시하는 언어로, HTML과 문법이 비슷, 대표적인 데이터 저장 방식이다.

XML은 컴퓨터(예: PC ↔ 스마트폰)간에 정보를 주고받기 매우 유용한 저장 방식으로 쓰이고 있다.
HTML과 같이 구조적 markup이다.

  • JSON

JavaScript Object Notation, 웹 언어인 Java Script의 데이터 객체 표현 방식으로, 데이터 용량이 적고 code로의 전환이 쉽기 때문에 XML의 대체제로 많이 활용되고 있다.

json 모듈을 사용하여 손 쉽게 파싱 및 저장 가능하다.
데이터 저장 및 읽기는 dict type과 상호 호환이 가능하다.


정규표현식으로 Parsing이 가능하나, 더 손쉬운 도구들이 개발되어있다. 그중 가장 많이 쓰이는 parser인 beautifulsoup으로 파싱한다.
정규식 위키백과

  • .
    정규 표현식의 Dot(.) 메타 문자는 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다
print(re.findall('e..o', "Hello"))  # ['ello']
  • *, +, {n, m}
    *은 0번, +는 1번, {n, m}은 n~m번 해당 글자가 반복되었을때의 문자와 매치됨을 의미한다.
print(re.findall('e*', "Hello")) #['', 'e', '', '', '', '']
print(re.findall('s*', "Hello")) #['', '', '', '', '', '']
print(re.findall('e+', "Hello")) #['e']
print(re.findall('e+', "Hello")) #['ll']
print(re.findall('l{2}', "Hello")) #['ll']
print(re.findall('e{2}', "Hello")) #['']
  • ? -> {0, 1}
print(re.findall('e?o?', "Hello")) # ['', 'e', '', '', 'o', '']
print(re.findall('He?l', "Hello")) # ['Hel']
  • | or , ^ not
print(re.search('e|b', "Hello"))# <re.Match object; span=(1, 2), match='e'>

0개의 댓글