기본 콘텐츠로 건너뛰기

라벨이 Python인 게시물 표시

[2025-07-28] python 에서 html to pdf 변환 비교

[2025-07-28] python 에서 html to pdf 변환 비교 안녕하세요. 클스 입니다. html로 작성된 문서를 RAG를 하기위해서 html을 그대로 사용해도 되지만, 불필요한 테그가 있어 비효율 적입니다. 그렇다고 테그를 제거하면 표 등 레이아웃이 깨지게 됩니다. 일반적으로   pdf가 많이 사용됩니다. 그래서 macos에서 많이 사용하는 2개의 라이브러리를 비교해보고자 합니다. 1. html 을 바로 변환하는 방법 :  weasyprint    [장점] 가볍다. 2. html 을 브라우저로 열어서 변환하는 방법 :  playwright       [장점] 풍부하게 css를 처리한다. 코드 ###### html to pdf ######### ''' 외부망에서 해야 함 brew install pango uv pip install weasyprint ''' from weasyprint import HTML html_file = '~/doc/test.html' # 1. 문자열 경로를 Path 객체로 만듭니다. path_obj = Path ( html_file ) # 2. .with_suffix() 메서드로 확장자를 변경합니다. pdf_file = path_obj .with_suffix( '.pdf' ) HTML ( filename = html_file ). write_pdf ( pdf_file ) ''' 외부망에서 해야함. # 1. Playwright 라이브러리 설치 uv pip install playwright # 2. Playwright가 제어할 브라우저(Chromium 등) 설치 (라이브러리 엄청 크네) python -m playwright install ''' import asyncio from pathlib import Path from playwright . async_api import as...

[2024-08-27] python 으로 excel(엑셀) 파일 다룰 때 주의점

[2024-08-27] python 으로 excel(엑셀) 파일 다룰 때 주의점 안녕하세요. 클스 입니다. 오늘은 python으로 엑셀 파일을 다룰 때 경험을 써보겠습니다. ----------- 환경 ------------ 인텔 맥 프로 2019 16인치, 메모리 32기가 ----------------------------- 약 70만건 대량의 데이터를 엑셀에서 불러옵니다. 약 10분이 걸립니다. 그래서 매번 불러서 분석하기에 시간이 너무 많이 들어서 불러들인 엑셀을 df.to_csv 해서 저장합니다. 그 다음 부터는 csv를 부르니 엄청 빠릅니다. 30초 ''' # pip install openpyxl xlsxwriter pandas numpy plotly nbformat poetry install or poetry add openpyxl xlsxwriter pandas numpy plotly nbformat ''' import os import pandas as pd import numpy as np import plotly.express as px version = 'v3' data_dir = os.path.expanduser( '~/data' ) installation_type_mapping_full = { "0001" : "ㅁㅁㅁ" , "0002" : "ㅁㅁㅁ1" , ... 보안상 생략 ....} # "송달구분" 코드에 따른 맵핑 딕셔너리 생성 delivery_type_mapping = { "0001" : "ㅁㅁㅁ" , "0002" : "ㅁㅁㅁ1" , ... 보안상 생략 .... } excel_source_file1 = f ' {data_dir} /7월_...

[2024-01-09] Python OpenAI API 유료결제 및 gpt-4-1106-preview 예제 (Feat. USB-C 젠더, 꺽은형)

안녕하세요. 클스 입니다. gpt 4 turbo 가 발표되면서 한번 써보고 싶었습니다. chat gpt 유료 결제를 하면 API 를 사용할 수 있나? ==> 없음 api를 유료 결제하면 chat gpt 4를 사용할 수 있나? ==> 없음 결론적으로 각각 결제를 해야 사용이 가능합니다. 웹에서 많이 사용하는 분들은 chat gpt 유료 결제하면되고 자동화를 하거나 프로그램과 연동하려면 api를 유료 결제 해야 합니다. 워낙 관련된 자료는 사이트에 많아서 생략하겠습니다. 다만 gpt 4 turbo를 사용하려면 api 1.0 이상이 되면서 함수가 변경되었네요~ 모델별 학습 데이터 모델명 세부 모델 토큰 데이터 학습 입력 출력 (1K) (1K) GPT-4-Turbo gpt-4-1106-preview 128,000 23년 4월 $0.01 $0.03 gpt-4-1106-vision-preview 128,000 23년 4월 $0.01 $0.03 GPT-4 gpt-4 8,192 21년 9월 $0.03 $0.06 gpt-4-32K 32,768 21년 9월 $0.06 $0.12 GPT-3.5 Turbo gpt-3.5-turbo-1106 16,385 21년 9월 $0.00 $0.00 gpt-3.5-turbo-instruct 4,096 21년 9월 $0.00 $0.00 준비 및 설정 $ mkdir openai $ cd openai $ pip install --upgrade openai $ pip freeze | grep openai openai==1.6.1 $ code . 예제 1 from openai import OpenAI client = OpenAI(api_key = ' 여기에 발급 받은 키를 입력하세요 ' ) completion = client.chat.completions.create( messages=[ { " role " : " system " ...

[2023-10-21] Python 3.12.0 버전 발표(Release Date: Oct. 2, 2023)

  Python 3.12.0 버전 발표(Release Date: Oct. 2, 2023) 요약 : 파이썬 3.12, f 문자열 개선 등 개발 편의성 향상 Release Note https://www.python.org/downloads/release/python-3120/ python 3.11 과 3.12 의 주요 기능 비교 * f 문자열은 복잡한 문자열 출력을 위한 문자열 형식화 기능의 하나다. 문자열 앞에 알파벳 f를 붙인 후 중괄호({}) 안에 공백 크기 지정 등 고급 형식지정 문자열을 입력해 바로 사용할 수 있다. * 신규 버전에서는 기존에 지원하지 않던 여러 줄의 표현식, 주석, 백슬래시 및 유니코드 이스케이프 시퀀스를 처리할 수 있는 기능이 추가됐다. * 표준라이브러리도 효율적인 활용을 목표로 수정이 이뤄졌다. 정리, 유용성 및 정확성에 중점을 둔 이번 수정작업에서 디스트유틸(distutils)패키지 등 더 이상 사용하지 않는 API는 제거되며 패스리브(Pathlib) 클래스가 서브클래싱을 지원하며, 명령줄 인터페이스가 모듈 SQLite3에 추가됐다. * 더불어 성능 개선 작업을 통해 내장 함수의 하나인 이즈인스턴스(isinstance)는 약 2~20배 속도 향상 됐으며, 비동기 I/O(asyncio) 패키지도 일부 벤치마크에서 약 75% 빨라진 것으로 나타났다. . * 파이썬 3.12버전은 인터프리터별 전역 해석기 잠금(GIL)을 적용해 여러 파이썬 스레드가 동시에 실행되는 것을 방지한다. 이를 통해 여러 CPU 코어를 보다 효율적으로 사용할 수 있는 하위 인터프리터 생성이 가능하다. * 이 밖에도 리눅스 커널 성능 측정 도구(perf)에서 C파이썬(CPython)을 지원하는 등 성능 개선 및 편의성 지원을 위한 업데이트가 이뤄졌다. * 출처 : https://zdnet.co.kr/view/?no=20231004094411 공식 발표 내용 * More flexible f-string pa...

[2023-04-04] Pandas 2.0 릴리즈 되었습니다.

[2023-04-04] Pandas 2.0 릴리즈 되었습니다.  안녕하세요. 클스 입니다. Pandas는 Python으로 데이터 분석을 위해 많이 사용하고, 생태계도 넓습니다. 지속적으로 업데이트가 이뤄지기도 합니다. 대용량 빠른 처리를 위해 Polars로 나왔지만 아직 생태계는 Pandas가 넓기 때문에 기본적으로는 Pandas를 알아야 합니다 plotly 같이 시각화를 하는 library도 pandas가 설치되어 있지 않으면 아예 설치가 안됩니다. 그리고 Polars도 to_pandas 와 같이 호환되는 함수를 제공합니다. 다만, 아쉬웠던 점은 대용량 처리, 메모리 그리고 속도였습니다. 이런 것을 해결하기 위해 Polars가 나왔습니다. 그러나 Pandas 가 놀지만 않죠... 2.0에 속도를 향상시키기 위해 PyArrow 가 들어왔습니다. 주의) Pandas 1.5.3이 삭제가 됩니다. 그래서 virtual env를 하나 생성해서 설치하는 것을 권장 드립니다.

[2023-03-31] aws cli 업데이트가 필요 합니다.

[2023-03-31] aws cli 업데이트가 필요 합니다. 안녕하세요. 클스 입니다. aws cli를 v1 설치하고 v2로 업데이트를 하였습니다. 한 1년전인 것 같습니다. python 3.9.11 을 설치하고  v2를 설치했었습니다.  당연히 python 을 업데이트 하면 자동으로 aws cli 가 최신 파이썬을 물고 동작할 줄 알았는데 그렇지가 않네요 pyenv와 virtual env로 py3.11.2 를 만들고 $ aws --version 을 해보시면 python 3.9.11 에서 돌고 있다. 이렇게 표시됩니다. 그래서 다시 설치했더니 python 3.11.2 로 변경됐습니다. 아래는 최신 aws cli 설치 방법 입니다. https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/getting-started-install.html 참고하셔서 본인 환경에 맞게 설치하시면 됩니다, (py3.11.2) [~/data/s3]$ aws --version aws-cli/2.11.7 Python/3.11.2 Darwin/22.4.0 exe/x86_64 prompt/off 이제 최신 버전으로 표시되네요~ 이상 클스 였습니다.

ChatGPT Python 으로 해보기 MacOS

 ChatGPT Python 으로 해보기<OpenAI> 1. pyenv + virtualenv + poetry 가 설치되어 있어야 한다. 2. 디렉토리 만들기 $ mkdir chatgpt $ cd chatgpt 3. 패키지 설치하기 $ poetry init      ... 계속 엔터 ... $ poetry add openai $ code .  4. main.py 짜기 import openai import argparse YOUR_API_KEY = '여기에 API KEY 입력' def chatGPT ( prompt, API_KEY=YOUR_API_KEY ): # set api key openai.api_key = API_KEY # Call the chat GPT API completion = openai.Completion.create( engine = 'text-davinci-003' # 'text-curie-001' # 'text-babbage-001' #'text-ada-001' , prompt = prompt , temperature = 0.5 , max_tokens = 1024 , top_p = 1 , frequency_penalty = 0 , presence_penalty = 0 ) return completion[ 'choices' ][ 0 ][ 'text' ] def main (): # 지문 입력 란 prompt = input ( "Insert a prompt: " ) print (chatGPT(prompt).strip()) if __name__ == '__main__' : main() 5. 실행 하기 $ python main.py 아직...

pyenv, pyenv-virtualenv & python & poetry

pyenv, pyenv-virtualenv & python & poetry 이 부분 수정 1. pyenv & python 설치 $ brew install pyenv $ pyenv install --list $ pyenv install 3.11.1 $ pyenv global 3.11.x $ pyenv local 3.11.x 이 부분 수정 2. pyenv-virtualenv & 가상환경 만들기 $ brew install pyenv-virtualenv ... installing.... $ vi ~/.zshrc -- 아래 추가 : 이미 있을 수 있음 -- # pyenv command eval "$(pyenv init -)" # pyenv-virtualenv command eval "$(pyenv virtualenv-init -)" $ source ~/.zshrc # create virtual environment $ pyenv virtualenv PYTHON-VERSION ENVIRONMENT-NAME # check available virtual environments in local $ pyenv virtualenvs # delete VIRTUAL ENVIRONMENT $ pyenv uninstall ENVIRONMENT-NAME # activate virtual environment $ pyenv activate ENVIRONMENT-NAME # GET OUT OF VIRTUAL ENVIRONMENT $ pyenv deactivate 이 부분 수정 3. python 필수 라이브러리 가상환경을 활성화 하고 하면 된다. 패키지는 가상환경에만 적용된다. # install and upgrade pip $ python3 -m pip install --upgrade pip 혹은 $ pip install --upgrade pip # check available packages $ pip l...

Python wget 으로 파일 다운로드시 SSL 인증오류 해결법

  Python wget 으로 파일 다운로드시 SSL 인증오류 해결법 회사에 방화벽이나 여러 침입탐지 시스템이 구성되어 있는 상황에서 오픈소스 기반으로 개발을 하기 쉽지 않다. 그래서 SSL 사이트는 다운로드가 안되는 경우도 있다. 아래 코드를 setup.py 등에 넣어두고 import setup 해서 매번 호출하면 된다. try : _create_unverified_https_context = ssl._create_unverified_context except AttributeError : # Legacy Python that doesn't verify HTTPS certificates by default pass else : # Handle target environment that doesn't support HTTPS verification ssl._create_default_https_context = _create_unverified_https_context ilename = wget.download( " https://raw.githubusercontent.com/e9t/nsmc/master/ratings_train.txt " , " data " )

anaconda python 업데이트 on MacOS

  anaconda python 업데이트 방법 문제 정의   맵북에서   Anaconda를 이용해서 Python을 설치하고, 나름대로 Mac북에서 Homebrew 등으로 Python을 설치하면 버전이 다르고 서로 햇갈리게 된다. 해별 방법   anaconda python 업데이트 conda search python conda update -n base -c default conda conda list anaconda$ conda install -c anaconda python=3.8.5 anaconda python이 두개의 위치에 설치되어 있음 시스템 전체 : ll /opt/anaconda3/bin/python* 사용자 폴더 : ll ~/opt/anaconda3/bin/python* 그래서 둘다 바꿔주면 정상적인 버전이 바뀜 rm -rf /opt/anaconda3/bin/python & ln -s /opt/anaconda3/bin/python3.8 /opt/anaconda3/bin/python rm -rf /opt/anaconda3/bin/python & ln -s /opt/anaconda3/bin/python3.8 ~/opt/anaconda3/bin/python MacOS python 업데이트 brew install  python@3.8 이거 안되면 python 사이트가서 pkg 파일 받아서 설치하자. Spyder IDE 에서도 동일한 Python 사용하기 Spyder 에도 python3.8.5를 사용하자 Spyder > python > Preferences > Python interpreter /opt/anaconda3/bin/python 혹은 ~/opt/anaconda3/bin/python Spyder 에서도 Python 3.8.5를 사용하자