Python/수업

파이썬 문법 심화 1주차 3_Sparta Coding Club

끈끈 2023. 3. 23. 16:48

 

https://sw-ing.tistory.com/34

 

파이썬 itertools 함수 iterator의 종류

itertools 파이썬3의 표준 라이브러리로, 효율적인 루핑을 위한 이터레이터를 만드는 함수 루프(Loop): 반복문. 명령문을 반복적으로 실행시키는 것 이터레이터(Iterator) 파이썬에서 반복으로 처리를

sw-ing.tistory.com

 

requests

 

파이썬에서 HTTP 통신을 가능하게 해주는 모듈

beautifulsoup과 함께 웹 크롤링을 하거나 api 통신이 필요할 때 사용됨

 

requests 요청에 존재하는 method:

(장고나 스프링 같은 프레임워크를 다룰 때 필수!)

  • GET : 데이터 정보 요청
  • POST : 데이터 생성 요청
  • PUT : 데이터 수정 요청
  • DELETE : 데이터 삭제 요청

 

requests 요청시 서버에서 내려주는 응답(response):

  • 내용(content) : 서버에서 사용자에게 주는 응답 본문
  • 상태 코드(status code) : 서버의 상태 표시

 

requests 모듈을 사용하기 위해 설치해야 하는 패키지:

pip install requests

 


 

👇 상태 코드의 종류

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP 상태 코드 - HTTP | MDN

HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 알려줍니다. 응답은 5개의 그룹으로 나누어집니다: 정보를 제공하는 응답, 성공적인 응답, 리다이렉트, 클라이언트 에러, 그리고

developer.mozilla.org

  • 2xx - 성공
  • 3xx - 페이지 리다이렉션
  • 4xx - 클라이언트 오류
  • 5xx - 서버 오류

 


 

👇 다양한 http 요청을 간편하게 테스트 할 수 있는 사이트

https://jsonplaceholder.typicode.com/

 

JSONPlaceholder - Free Fake REST API

{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. Serving ~2 billion requests each month.

jsonplaceholder.typicode.com

  • get 요청 테스트코드
import requests
from pprint import pprint

# 통신 할 base url 지정

# 1번 사용자 정보를 받아오기 위해 users/1 경로에 get 요청
r = requests.get(f"{url}users/1")

pprint({
    "contents": r.text,
    "status_code": r.status_code,
})
  • post 요청 테스트코드
import requests
from pprint import pprint

# 통신 할 base url 지정

# 데이터 생성에 사용될 값 지정
data = {
    "name": "sparta",
    "email": "sparta@test.com",
    "phone": "010-0000-0000",
}


# 사용자를 생성하기 위해 users 경로에 data를 담아 post 요청
r = requests.post(f"{url}users", data=data) # put, delete도 똑같다

pprint({
    "contents": r.text,
    "status_code": r.status_code,
})

 


 

json

 

javascript Object Notation, .json 확장자를 사용

데이터를 저장하거나 데이터 통신을 할 때 주로 사용

key:value 쌍으로 이루어져 파이썬의 딕셔너리와 서로 변경할 수 있다

json 형태로 내려주는 사이트만 입력 가능!

import json
import requests

# 해당 사이트는 요청에 대한 응답을 json 형태의 문자열로 내려줍니다.

r = requests.get(f"{url}users/1")
print(type(r.text))  # <class 'str'>

# 문자열 형태의 json을 dictionary 자료형으로 변경합니다.
response_content = json.loads(r.text)
print(type(response_content))  # <class 'dict'>

# dictionary 자료형이기 때문에 key를 사용해 value를 확인할 수 있습니다.
print(f"사용자 이름은 {response_content['name']} 입니다.")

 


 

csv

 

comma-separated values, .csv 확장자를 사용

텍스트에 쉼표(,)를 사용해 필드를 구분함

단순 텍스트이기 때문에 텍스트 편집기를 사용해 간단한 csv 파일을 만들 수 있다

읽고 쓰는 속도가 빠르다

# 파이썬에서 csv 파일을 다루기 위해 모듈 import
import csv

csv_path = "sample.csv"

# csv를 list 자료형으로 읽기
csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.reader(csv_file)
for i in csv_data:
    print(i)

# 작업이 끝난 csv 파일을 닫아줍니다.
csv_file.close()

# csv를 dict 자료형으로 읽기
csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.DictReader(csv_file)

for i in csv_data:
    print(i)

csv_file.close()

csv.reader() : list / csv.DictReader() : dict 형태로 읽기

나의 활용 용도에 따라 불러오면 됨

import csv

csv_path = "sample.csv"

# csv 파일을 쓸 때는 newline='' 옵션을 줘서 중간에 공백 라인이 생기는 것을 방지합니다.
csv_file = open(csv_path, "a", encoding="utf-8", newline='') # append로 불러옴
csv_writer = csv.writer(csv_file)

# csv에 데이터를 추가합니다.
csv_writer.writerow(["lee@sparta.com", '1989', "lee", "Seoul"])

csv_file.close()

csv_file = open(csv_path, "r", encoding="utf-8")
csv_data = csv.reader(csv_file)
for i in csv_data:
    print(i)

csv_file.close()

csv.writer() : 쓰기

 


 

데코레이터(decorator)

 

파이썬의 함수를 장식해주는 역할

해당 함수가 실행될 때 같이 실행됨

선언되는 함수 위에 @decorator 의 형태로 작성

 

함수의 실행시간 구하기

 

비슷한 방식으로 사용자 권한 체크하기 등도 가능

 

함수 인자를 입력받아서도 사용 가능하고

어떤 함수든 데코레이터를 붙이면 원하는 방식으로 코드 실행이 가능하다는 장점