반응형

Python 377

Flask 디버그 모드란? / 사용 예제, 장점

파이썬 플라스크로 구현된 서버에서 오류가 발생할 경우, 웹사이트 상에서 에러 메시지가 보이지 않습니다. 이런 경우, 플라스크에 내장된 디버그 모드를 활용하면, 오류 상황을 조회할 수 있어 편리한데요. 이번 글에서는 Flask의 Debug 모드에 대해서 예제를 통하여 간단하게 살펴보도록 하겠습니다. 디버그 모드 미적용 경우 우선, 아래와 같은 간단한 기능을 플라스크를 통하여 실행해보도록 하겠습니다. 참고로, app.run에서 debug 인자의 기본 값은 False인 점을 참고해주세요. from flask import Flask app = Flask(__name__) @app.route('/') def square(number): return f'{number} ** 2 = {int(number) ** 2}..

Python/Backend 2023.10.05

파이썬에서 종료 시에 특정 함수를 실행하는 방법(atexit 모듈)

Python으로 작성한 py 파일 프로그램이 종료되는 때에 맞추어 특정 함수를 실행시켜보고 싶은 경우가 있습니다. 이 경우에 atexit 라이브러리를 활용하면 정상 종료, 오류로 인한 강제 종료의 경우를 모두 포함하여 원하는 기능을 간단하게 호출할 수 있습니다. 프로그램 종료 시점 함수 호출 기본 예제 만약 프로그램이 종료되는 시점에 exit_print라는 함수를 실행시키고 싶은 경우라면 다음과 같이 atexit 모듈의 register 메소드로 호출을 원하는 함수를 등록시켜주시면 됩니다. import atexit import time def exit_print(): print('프로그램이 종료됩니다!') atexit.register(exit_print) for i in range(5): print(f'남..

Python/Utils 2023.10.04

셀레니움 h1, strong 등 HTML 태그 적용 텍스트 삽입 방법 예제

파이썬의 selenium을 활용하여 텍스트를 입력하는 과정에서 h1이나 strong과 같은 HTML 태그가 적용된 텍스트로 입력을 원하는 경우가 있습니다. 이 글에서는 원하는 HTML 양식이 적용된 텍스트를 넣는 방법을 간략하게 정리해 보겠습니다. 참고: 셀레니움 기본 텍스트 입력 코드 예제 셀레니움에서는 일반적으로 find_element 등 메서드로 원하는 위치를 찾은 뒤에 send_keys 메서드를 활용하여 텍스트를 입력하게 됩니다. from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() txt_box = driver.find_element(By.NAME, 'txt_box_..

Python/Crawling 2023.09.26

셀레니움 오류 raise NoSuchElementException: Message: no such element: Unable to locate element 원인 및 해결법

파이썬의 selenium 모듈로 버튼 클릭이나 텍스트 입력 등 과정을 수행하기 위하여 필요한 객체를 찾는 과정에서 NoSuchElementException 에러가 자주 발생할 수 있습니다. 이번 글에서는 해당 오류의 대표 케이스들을 정리해보고 원인 및 해결 방법을 케이스별로 정리해보도록 하겠습니다. 셀레니움에서 일반적으로 name이나 id 등 속성으로 element를 찾는 방법은 아래와 같습니다. from selenium.webdriver.common.by import By a = driver.find_element(By.NAME, 'name_00') # name 속성 기준 탐색 b = driver.find_element(By.ID, 'id_01') # id 속성 기준 탐색 위 형태의 코드를 실행하는 과..

Python/Debugging 2023.09.25

파이썬 해시 함수 모듈 hashlib 사용법

Python에서 해싱을 간편하게 진행시킬 수 있도록 해주는 라이브러리인 hashlib에 대하여 간략하게 소개해보고 사용 방법 예시를 살펴보도록 하겠습니다. hashlib에서 지원하는 해시 함수 종류 hashlib에서는 과거에 많이 활용되던 방법인 MD5 등부터 비교적 최신 해시 알고리즘인 SHA-3, BLAKE2 등까지 많은 종류의 해시 함수를 제공하고 있습니다. 지원하는 해시 함수의 종류는 아래와 같이 확인이 가능합니다. import hashlib print(hashlib.algorithms_guaranteed) # {'shake_128', 'blake2b', 'sha256', 'sha3_384', 'sha3_512', 'sha224', 'sha3_256', 'shake_256', 'sha1', 'sh..

Python/Utils 2023.09.23

JSONDecodeError: Expecting value: line 2 column 7 (char 8) / Expecting ',' delimiter 원인 및 해결법

Python으로 json 문자열 파싱 과정을 수행할 때 자주 발생하는 오류 케이스인 JSONDecodeError에 대하여 발생 원인과 해결 방법을 간략하게 정리해 보겠습니다. 정상적인 json 파싱 케이스 아래와 같이 정상적인 json 양식으로 저장된 문자열을 가정해 보겠습니다. txt = '{"a" : "123", "b" : {"c" : "456"}}' 이런 정상적인 양식의 문자열의 경우, json 모듈의 loads 메서드를 통하여 쉽게 파싱을 진행할 수 있습니다. import json txt_dict = json.loads(txt) print(txt_dict['b']['c']) # 456 오류 케이스 1: 딕셔너리 규칙이 지켜지지 않은 경우 json에서는 {}로 딕셔너리 자료형 시작과 끝을 표현하고,..

Python/Debugging 2023.09.23

파이썬 FastAPI / Flask 로컬 서버 포트(127.0.0.1) 띄우기 방법 정리 및 차이 비교

Python에서 로컬 서버 포트 주소인 127.0.0.1:port에 해당하는 페이지를 띄우는 방법을 FastAPI와 Flask에서의 방법 차이를 기준으로 간략하게 정리해보도록 하겠습니다. FastAPI 서버 포트 띄우기 방법 FastAPI에서 로컬 서버 포트를 열기 위해서는 해당 모듈과 함께 uvicorn 모듈도 필요합니다. 아래 명령어를 통하여 간단히 설치가 가능합니다. $ pip install fastapi $ pip install uvicorn 다음과 같이 간단한 get 메서드를 지원하는 상황을 가정해보고, main.py 파일을 간단하게 작성해보도록 하겠습니다. from fastapi import FastAPI # FastAPI 객체 선언 app = FastAPI() # 기본 주소가 호출된 경우 실..

Python/Backend 2023.09.22

UnicodeEncodeError: 'cp949' codec can't encode character 원인 / 해결 방법

오류 개요 파이썬에서 txt나 json 파일을 read/write 하는 과정에서 다음과 같은 오류가 발생하였습니다. UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 122: illegal multibyte sequence 참고로, 해당 코드는 리눅스 체제에서는 정상 작동되었는데, 에러가 발생한 운영체제 환경은 윈도우였고, 한국어 세팅이었습니다. 오류 원인 한국어 환경에서의 인코딩은 'cp949'로 지정이 된 경우가 많은데, 유니코드('utf-8') 등 다른 인코딩 방법으로 인코딩된 파일을 다루는 경우, 인코딩 버전 불일치로 인하여 해당 에러가 발생할 수 있습니다. 오류 해결법 파일을 다루는 과정에서 encoding 방법을 명시적으..

Python/Debugging 2023.09.19

ChatGPT, GPT-4 토큰 개수 카운팅 및 인코딩/디코딩 방법(파이썬 tiktoken 모듈 활용)

GPT-3.5(ChatGPT) 및 GPT-4 활용을 위하여 원하는 글의 토큰 개수를 세거나 Encoding 및 Decoding 과정이 필요할 때가 종종 있습니다. 이 과정은 파이썬의 tiktoken 라이브러리의 기능을 활용하면 해당하는 토크나이저를 쉽게 불러올 수 있고, 토큰 개수 카운팅 및 인코딩/디코딩도 쉽게 할 수 있습니다. 이번 글에서는 해당 모듈의 사용법을 중심으로 위의 방법들을 간략하게 정리해보도록 하겠습니다. 토크나이저 선언 방법 우선, !pip install tiktoken 명령어로 모듈 설치를 진행해줍니다. 이후, ChatGPT(gpt-3.5-turbo) 혹은 GPT-4에 대하여 토크나이저를 가져오려면 cl100k_base 인코딩 방법을 지정해주시면 됩니다. 이후 모델명을 지정하여 최종 ..

Python/NLP Code 2023.09.19

파이썬 특정 시각에 코드를 실행하는 방법(schedule, threading 모듈 활용)

Python에서 코드를 실행시켜 두었을 때, 특정 시각마다 원하는 코드가 작동되도록 하고 싶을 때가 있습니다. 이번 글에서는 파이썬 내부에서 코드 주기적 실행이 가능하도록 하는 방법을 기본 예제와 별도의 스레드를 두는 예제로 나누어 간략하게 정리해보도록 하겠습니다. 특정 시각 실행 기본 예제(schedule 모듈) 예를 들어, 매일 오전 11시에 my_job() 함수 내의 코드를 실행하고 싶다면 schedule 라이브러리를 활용하여 다음과 같이 코드를 작성해주시면 됩니다. import schedule # 미설치 시 !pip install schedule import time def my_job(): print("오전 11시 입니다!") schedule.every().day.at("11:00").do(my..

Python/Utils 2023.09.18
반응형