python 46

[파이썬 기초] Class / 함수 (args,kwargs)

모든 언어에서 클래스 객체 생성과 함수선언은 매우매우매우 중요하다. 여러분이 클래스를 얼마나 이해하고 있는지는 잘 모르겠으나, 간략하게 소개하고 지나간다. 다 알고 있다면 아래로 내려 본문으로 이동하자. Class class 으로 선언이 가능하다. 처음 클래스에 대한 설명을 들었을 때, 보통 붕어빵으로 예시를 많이 하는데, 그땐 잘 이해가 안갔다. 근데 그만큼 확실한 예시도 없는 것 같다. 혹시 메이플스토리나 기타 RPG게임을 해 본적이 있다면 그걸 예시로 들어보자. 클래스는 함수와 마찬가지로 그 자체로는 아무런 기능이 없다. 유명한 시 구절에도 있지않은가. 내가 그의 이름을 불러주었을 때 그는 나에게로 와서 꽃이 되었다. 부르기 전까진 아무것도 하지 않는다. 모자 상의 무기 하의 신발 대충 이렇게 장비..

python/기초 2021.10.13

[python 기초] bytesIO를 메모리로 읽어서 해체하자.

s3에서 로컬 다운로드없이 파일을 읽으려고한다. s3가 아니더라도, bytes 형태를 이미지로 바꿔보자 귀여운 고양이사진이다. s3에 이 사진이 있다고 가정하고, bytes로 읽어보자. boto3가 설치되어있다는 가정 하에 진행하면, 우선 s3에 접속해야한다. s3 = boto3.resource(aws_access_key_id = 'YOUR_KEY', aws_secret_access_key = 'YOUR_SECRET_KEY', #endpoint_url='https://kr.object.ncloudstorage.com', #정말 만약에 ncp를 사용하고있다면, 위의 주석을 해제하자 service_name = 's3') bucket = s3.Bucket('your_bucket') 제대로 입력했다면 에러없이 ..

python/기초 2021.10.12

Flask CORS

Flask만 단독으로 사용하여 웹을 구성하면 사실 의미없는 기능이다. 하지만, 대부분의 프로젝트가 그렇듯 여러 툴을 사용하여 구성하는 경우가 많으므로 CORS를 설정해야 한다. 내 경우에는 Flask로 만들어진 서버에 Vue로 프론트를 구성하였는데, api 호출이 안된다며 cors를 설정해달라는 요청을 받았었다. CORS는 무엇인가? https://evan-moon.github.io/2020/05/21/about-cors/ 이 포스트에 참 잘 설명되어있다. 간단하게 요약하자면 flask 에서 보내는 api를 외부에서 호출할 때, 신뢰가지않는 도메인이라고 판단해서 받아주지 않는다고 생각하면 된다. 왜 신뢰할 수 없는 도메인을 차단하는지는 위의 링크에 나타나있다. 그럼 flask에서 cors를 어떻게 적용시..

python/웹 2021.09.27

[파이썬 크롤러] 나는 로봇이 아닙니다. header

2021.07.21 - [python/크롤링] - [파이썬 크롤러] 웹 크롤러 만들기 이전 게시글에서 잠깐 언급했듯, 각 사이트별로 robots.txt라는 항목이 존재한다. 왼쪽은 https://google.com/robots.txt 의 결과이다. 간단하게 Allow 는 크롤링 허용, Disallow는 허용하지 않는다는 의미인데, 무엇을 허용하고 허용하지 않는다는 말일까? https://searchadvisor.naver.com/guide/seo-basic-robots 친절하게 설명되어있다. 구글은 크롤러에 상당히 엄격하다. 일부만 캡쳐했는데도 Disallow가 상당하고, User-agent 가 * 즉 모든 유저에 대해서 적용된다. 우리도 종종 구글에서 일정한 간격으로 비슷한 패턴을 가지고 검색하게되면 ..

python/크롤링 2021.09.09

[파이썬 기초] try ~ except문

예외처리는 중요하다. 오래 돌려야 하는 코드를 만들다 예상치 못 한 에러에 전부 죽어버릴 수 있으니 이를 미연에 방지해야한다. try ~ except 자, 여러분은 지금 두 수를 입력받아서 나누는 코드를 짠다고 생각하자. a = int(input()) b = int(input()) print( a / b ) 간단하게 생각해보면 위와 같이 짤 수 있다. 하지만 만약 입력하는 값이 숫자가 아닌 문자라면? b가 0이라면? 전자의 경우에는 ValueError, 후자의 경우에는 ZeroDivisionError와 함께 빨간줄이 빠방 하고 나타날 것이다. 저주스러운 빨간색보다 이런 에러를 미리 생각해서 부드럽게 print문으로 바꿔줬으면 좋겠다. 이럴 때 사용할 수 있는 메서드가 try문이다. try: a = int..

python/기초 2021.09.07

[파이썬 기초] 반복문 - enumerate, zip

모든 언어에서 반복문은 중요하다. 가장 먼저 배우는 문법이 변수선언 뒤에 반복문이니까. 자바 개발자인 아는 분께서 반복문에 인덱스를 다음과 같이 작성한 것을 보고 포스팅한다. enumerate i = 0 for item in items: ... ... ... i += 1 위의 코드가 잘못되었다는 말이 아니다. 어디까지나 직관적인 코드고, 파이썬스럽지 않을뿐이니까. 자 위의 코드를 좀 더 파이썬스럽게 고쳐보자 for i,item in enumerate(items): ... ... ... i를 선언하고 더해주는 과정 필요없이, enumerate라는 메서드를 사용하면 하나의 루프가 돌 때마다 i가 1씩 추가된다. 루프를 도는데 인덱스가 필요하다면 이런식으로 코드를 짜보자. zip 우리에게 친숙한 압축 확장자 ..

python/기초 2021.09.07

[파이썬 서버] Flask를 잘 써보자 - Blueprint

이전 포스트에서 플라스크를 이용해서 웹을 구성했다. Hi 밖에 나오지 않지만 일단 구축에 성공했다고 볼 수 있다. 2021.08.17 - [python/웹] - [파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1] [파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1] 파이썬을 이용하여 웹 서버를 만들어보자 https://flask.palletsprojects.com/en/2.0.x/ Welcome to Flask — Flask Documentation (2.0.x) flask.palletsprojects.com 사용할 패키지는 Flask를 사용할 것이다. 파.. kkiho.tistory.com 만약 서비스가 복잡해지고, 신경써야 할 url이 많아진다면 플라스크를 실..

python/웹 2021.08.19

[파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [2]

서버를 만들었으면 다음은? 데이터를 뿌린다 ( O ) SQLAlchemy 를 이용해서 db를 구성하자. flask는 db기능을 포함하지 않으므로, flask_sqlalchemy를 이용해서 db를 구성해야한다. 우선, 패키지를 다운로드하자. pip install flask_sqlalchemy 이전 포스트에서는 단순히 url을 통해서 텍스트를 화면에 출력했다. 하지만 db를 설계하고 url을 통해서 db를 직접 수정하기 위해서 좀 더 복잡한 코드가 불가피하게 사용된다. 최대한 자세하게 설명해보겠지만, 그래도 어려우면 댓글을 통해 소통해보자. 우선, 이전에 사용된 코드를 보자. from flask import Flask app = Flask(__name__) @app.route('/') def main(): ..

python/웹 2021.08.17

[파이썬 서버] 간단하게 파이썬 웹페이지 만들기 ( Flask ) [1]

파이썬을 이용하여 웹 서버를 만들어보자 https://flask.palletsprojects.com/en/2.0.x/ Welcome to Flask — Flask Documentation (2.0.x) flask.palletsprojects.com 사용할 패키지는 Flask를 사용할 것이다. 파이썬으로 웹 서버를 구동하는 방식은 flask, django 등등 여러가지가 있지만, flask를 다뤄보자. pip install flask pip 명령어를 통해서 플라스크를 인스톨하자. 웹 서버이니 주피터노트북보단 파이참이나 기타 ide를 사용하자. 인스톨 했으면 다 한거다. from flask import Flask app = Flask(__name__) @app.route('/') def index(): re..

python/웹 2021.08.17
반응형