일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 맥북
- hackerrank
- github
- 프로그래머스
- AI 경진대회
- 편스토랑 우승상품
- 파이썬
- PYTHON
- leetcode
- 자연어처리
- Docker
- 백준
- dacon
- 금융문자분석경진대회
- Kaggle
- ChatGPT
- Real or Not? NLP with Disaster Tweets
- gs25
- Git
- Baekjoon
- SW Expert Academy
- 데이콘
- programmers
- 프로그래머스 파이썬
- 캐치카페
- 코로나19
- 편스토랑
- 더현대서울 맛집
- 우분투
- ubuntu
- Today
- Total
목록
반응형
Programming/Python (108)
솜씨좋은장씨
👨🏻💻 오류 내용 excel_df = pd.read_excel("./test_excel.xlsx") Excel파일을 읽어오려고 Pandas의 read_excel을 활용하려고 하니 ValueError: Your version of xlrd is 2.0.1. In xlrd >= 2.0, only the xls format is supported. Install openpyxl instead. 위와 같은 오류가 발생했습니다. 내용을 잘 읽어보면 xlrd의 버전이 2.0 이상부터는 xls 형식만 지원한다! 라고 되어있습니다. 이에 xlrd의 버전을 낮추어 보아도 오류가 해결되지 않았습니다. 👨🏻💻 해결방법 $ pip install openpyxl xlrd 대신 openpyxl을 설치하면 해결됩니다. 읽어주셔..
opencv를 활용하여 오랜만에 사각형을 그리려고 하는데 pt1 = (bounding_box['left'], bounding_box['top']) pt2 = (bounding_box['right'], bounding_box['bottom']) background_img = cv2.rectangle(img=background_img, pt1=pt1, pt2=pt2, color=blue_color, thickness=2) -------------------------------------------------------------------------- TypeError Traceback (most recent call last) in 15 pt1 = (bounding_box['left'], bounding..
1. 소수점 단위 반올림 관련 ( 소수점 두번째 이상 부터 ) 오늘 아침에 일어나서 코딩 1일 1문제 풀기 문제로 백준의 이번학기 평점은 몇점? 문제를 푸는데 소수점 세번째 자리에서 반올림을 하는 부분을 round(score, 2) 위처럼 round 함수를 활용하여 구하였는데 이상하게 반올림이 되지않고 버림이 되는 문제가 있었습니다. 직접 테스트 해보니 소수점 두번째 부터는 round의 동작이 기존에 알고있는 반올림과 다르게 반올림하는 값의 앞의 값이 홀수일 경우 0~5 값은 내림, 6~9 까지의 값은 올림이 반올림하는 값의 앞의 값이 0또는 짝수일 경우 0~4 값은 내림, 5~9 까지의 값은 올림이 되었습니다. 직접 결과를 확인해보면 아래와 같습니다. round(2.205, 2) > 2.21 round..
개발을 하다가 파일을 읽고 쓰거나 어떠한 문자열을 읽으려고 할 때 UnicodeDecodeError: 'cp949' codec can't decode byte 0xde in position 361: illegal multibyte sequence 위와 같이 UnicodeDecodeError 가 발생하며 어떠한 형식은 can't decode byte ~~~ 즉 디코딩을 할 수 없다는 오류를 종종 만나게 됩니다. 이 글에서는 byte 뒤의 내용에 따라 어떠한 형식으로 인코딩 하라고 바꾸어주면 되는지에 대해서 하나씩 찾을 때 마다 업데이트를 할 예정입니다. 구분 코드 인코딩 형식 비고 1 0xe2 ISO-8859-1 읽어주셔서 감사합니다.
FastAPI로 API를 개발하면서 from fastapi import APIRouter router = APIRouter(tags=["template crud"]) 위처럼 FastAPI의 APIRouter를 활용하여 개발한 후에 호기롭게 실행하였는데...! router = APIRouter(tags=["template crud"]) TypeError: __init__() got an unexpected keyword argument 'tags' 위처럼 APIRouter는 tags라는 항목을 가지고 있지 않다는 오류가 발생하였습니다. 원인 원인은 내 컴퓨터 또는 서버에 설치되어있는 FastAPI의 버전이 낮아 발생하는 오류입니다. 해결방법 pip를 최신버전으로 업데이트 한 이후에 $ python3 -m ..
최근 명령어를 python 코드 속에서 실행하고 그 결과 값을 코드로 받아와 활용을 해야하는 작업이 있었습니다. Mac과 Ubuntu에서 이를 수행하는 방법에 대해 정리해 보려합니다. 명령어 실행과 값 받아오기는 python의 기본 모듈인 subprocess를 사용했습니다. 먼저 테스트에 활용할 python 스크립트를 하나 작성해주었습니다. exec_python_script.py def solution(): return "test_script" if __name__ == "__main__": print(solution()) 그리고 이 파일을 실행하고 결과 값을 받아와 return하는 함수를 하나 만들어 주었습니다. import subprocess def exec_script(icmd): cmd = lis..
최근에 업무를 하면서 제가 작성했던 코드의 성능을 높이는 작업이 필요하여 어떻게 할까 고민하던 차에 회사 동기가 알려주어 프로파일링이라는 것을 알게되었고 프로파일링을 통하여 제 코드의 성능 저하 원인을 파악하게 되었고 해당 원인을 해결함으로써 거의 10배에 가까운 성능 향상이 일어나는 것을 경험하게 되었습니다. 한편으로는 기존에 제가 작성하던 코드가 얼마나 비효율적이었는지를 깨닫는 시간이기도 했습니다. 뭔가 엄청 망한 성적표를 받는 기분이었습니다. 😅 프로파일링을 통해서 내 코드 속에서 어떤 부분이 가장 많이 호출되는지 어떤 부분이 동작하는데 가장 많은 소요시간이 걸리는지 알수있었습니다. 이 글에서는 python의 profile과 line_profiler를 활용하여 프로파일링 하는 방법에 대하여 적어보려..
최근 python 코드를 암호화해야할 일이 생겨 sourcedefender를 활용하여 진행해보았습니다. 다음은 sourcedefender를 활용하여 암호화를 진행하는 방법입니다. 상업적으로 사용할때에는 라이센스 문제가 있기 때문에 사용에 주의하시기 바랍니다@~@ 1. sourcedefender 설치 먼저 pip를 활용하여 sourcedefender를 설치합니다. $ pip install sourcedefender $ pip install sourcedefender==6.0.21 설치는 위의 두 명령어 중 하나를 골라 설치하면 됩니다. 2. 실행할 코드 속 __name__ == "__main__" 지우기 그 다음 실행 할 코드 속 if __name__ == "__main__"": main 라인을 삭제합니다..
이 글에서는 opencv를 활용하여 도형을 그리는 방법에 대해서 적어보려합니다. 0. opencv 설치하고 import 하기 $ pip install opencv-python import cv2 1. 선 그릴 이미지 불러오기 or 흰 바탕 만들기 1-1. 이미지 불러오기 background_img = cv2.imread("./filename.png") cv2의 imread를 활용하여 이미지를 불러옵니다. 1-2. 흰 바탕 만들기 먼저 numpy를 설치합니다. $ pip install numpy 흰 바탕은 numpy의 zeros를 활용하여 만들어줍니다. import numpy as np 설치한 numpy를 import 하고 background_img = np.zeros(shape=(500, 300, 3),..
오랜만에 Dacon 대회를 도전해보면서 baseline 코드에 StratifiedKFold를 적용해서 결과를 내보고자 from sklearn.model_selection import StratifiedKFold Colab에서 위와 같이 import를 시도하였는데 ImportError: cannot import name 'delayed' from 'sklearn.utils.fixes' (/usr/local/lib/python3.7/dist-packages/sklearn/utils/fixes.py) 위와 같은 오류가 발생하였습니다. 이를 해결하는 방법은 다음과 같습니다. !pip install delayed delayed를 pip 를 활용하여 설치한 다음 런타임 다시시작을 한 다음에 다시 import를 하게..
최근에 일을 하면서 split( ) 과 split(" ") 의 결과가 다르다는 것을 어렴풋이 들은 기억이 있었습니다. 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 그러다 위의 문제를 풀다가! split(" ")을 사용하여 계속 실패하다가 split( )으로 바꾸어 푸니 성공하였습니다. 이 참에 두 함수의 차이가 무엇인지 알아보았습니다. string = "word1 word2 word3 word4 " 예를 들어 위와 같이 word1 다음공백 1개, word2 다음 공백 2개, word3 다음 공백 3개,..
최근 aiohttp와 requests가 같이 설치되어있는 가상환경에서 fastapi로 개발되어있는 api 코드를 실행하려고 하니 $ python3 asgi.py ImportError: cannot import name 'DependencyWarning' from 'urllib3.exceptions' (/Users/donghyunjang/42maru/Cerberus/lib/python3.7/site-packages/urllib3/exceptions.py) 위와 같은 오류가 발생하였습니다. 이를 해결하는 방법은 다음과 같습니다. $ pip uninstall urllib3 먼저 urllib3를 제거한 다음 $ pip install urllib3 다시 설치하고 나서 다시 실행해보면! $ python3 asgi...
Shapely를 활용하여 코드를 작성하고 실행하니 OSError: Could not find lib c or load any of its variants []. 위와 같은 오류가 발생하였습니다. 이후에 geopandas 에서도 AttributeError: 'LGEOS360' object has no attribute 'GEOSBufferWithParams' 위와 같은 오류가 발생하였습니다. 이를 해결하는 방법은 정말 간단합니다. 간단하게 두 개의 라이브러리를 재설치 해주면 됩니다. $ python -m pip uninstall shapely $ python -m pip install shapely $ python -m pip uninstall geopandas $ python -m pip install ..
이번 글에서는 Python과 Selenium을 활용하여 인스타그램 게시물을 크롤링하는 방법에 대해서 적어보려 합니다. 해당 코드를 활용하여 발생하는 문제는 코드 사용자에게 있음을 알려드립니다. % 현재 아래의 방법을 활용한다고 하여 게시물을 무한으로 크롤링 할 수 있지는 않습니다. 개인 PC사양, 네트워크 환경에 따라서 같은 코드여도 크롤링 할 수 있는 게시물의 개수가 달라짐을 알려드립니다. 제 환경 ( MacBook Pro 2017 13인치 - 4 Thunderbolt Ports 8GB + 500Mbps 인터넷 ) 에서는 약 10,000개 정도 까지 가능했습니다. dmkym 님 댓글 남겨주셔서 감사합니다~👍 % 2021년 7월 기준 인스타그램 측에서 사람이 손으로 게시물을 클릭하여 접근하여도 일정 게시..
requests 라이브러리를 활용해서 개발을 하던 중 > ImportError: cannot import name DependencyWarning 위와 같은 오류가 나면서 제대로 실행이 되지 않는 문제가 있었습니다. 이때 $ pip install --upgrade requests 위와 같이 한번 실행해주고 다시 실행해보면 오류가 발생하지 않는 것을 볼 수 있습니다. 이와 관련하여 부족한 점이 있다면 언제든 댓글 부탁드립니다. 감사합니다.
FastAPI로 API를 제작하고 테스트 하면서 나는 분명히 한 번만 요청했는데 제대로 요청을 받았다는 200OK 응답이 나오기 전에 > 307 temporary redirect 위와 같이 307 temporary redirect 라는 메세지가 한 번 나오고 나서 200OK가 나올 경우가 있습니다. 이 문제의 원인은 본인의 코드에서 endpoint 설정하는 부분을 보면 알 수 있습니다. @app.post(path="/api/v1/testAPI/", response_model=TestResponse) endpoint 마지막에 "/" (슬래쉬) 가 붙어 있을 경우 redirect 하도록 되어있기 때문에 발생합니다. _starlette/routing.py:601_ if scope["type"] == "http..
OpenCV를 활용하여 이미지를 열고 특정 위치에 원과 사각형을 그린 후에 다시 저장하는 코드를 작성하였는데 error: (-215:Assertion failed) !_src.empty() 뭔가 cv2.imwrite를 통하여 저장하려고 하면 위와 같은 오류가 발생했습니다. 위의 오류가 발생하는 원인은 두 가지가 있습니다. 1. 잘못된 파일 경로 img = cv2.imread("{{ 파일 경로 }}") 첫 번째는 위와 같이 cv2.imread를 활용하여 파일을 불러올 때 입력한 파일 경로가 잘못 되어 입력한 파일 경로로 파일을 찾으려고 하여 오류가 발생하는 경우 입니다. 이를 해결하는 방법은 내가 불러오고자 하는 파일의 위치를 다시 확인하고 수정해주면 됩니다. 2. 파일 이름이 한글로 되어있는 경우 만약 ..
gunicorn을 활용하여 Flask로 만든 API를 배포하기 위하여 gunicorn --bind 0.0.0.0:5000 -w=2 -k=gevent --threads=2 app:app 위의 명령어를 활용하여 실행을 하니 [Ubuntu] ModuleNotFoundError: No module named '_bz2' 해결 방법 우분투에서 아래의 명령어를 통해 api를 gunicorn을 활용하여 띄우려고 할때 gunicorn --bind 0.0.0.0:5000 -w=2 -k=gevent --threads=2 app:app /usr/local/lib/python3.7/importlib/_bootstrap.py:219: Runtime.. somjang.tistory.com [Ubuntu] UserWarning: ..
wand 라이브러리 설치 $ pip install wand 위의 라이브러리는 ImageMagick이라는 것을 활용하므로 이것도 같이 설치해주어야 합니다. ImageMagick 설치 Ubuntu 에서 설치하는 방법 sudo apt-get install libmagickwand-dev 위의 명령어로 설치한 이후에 사용할 설정을 수정해주면 완료입니다. [Python] wand.exceptions.PolicyError: not authorized `./test.pdf' @ error/constitute.c/ReadImage/412 해결방법 wand와 ImageMagick을 설치한 후 pdf를 tiff로 변환하려고 할 때 wand.exceptions.PolicyError: not authorized `./test..
wand와 ImageMagick을 설치한 후 pdf를 tiff로 변환하려고 할 때 wand.exceptions.PolicyError: not authorized `./test.pdf'@ error/constitute.c/ReadImage/412 위와 같은 오류를 만나게 되었습니다. 위는 imageMagick의 설정에 pdf 관련 설정이 none으로 설정되어있기 때문입니다. 이를 해결하는 방법은 다음과 같습니다. 먼저 설정을 변경할 파일을 vi 편집기로 열어줍니다. $ sudo vi /etc/ImageMagick-6/policy.xml $ sudo vi /etc/ImageMagick/policy.xml 위의 두 경로 중 본인의 설치 버전에 맞는 버전의 경로로 들어가면됩니다. 여러 부분 중에서 위의 부분을 ..
이 글에서는 자주 사용하는 정규식을 정리하려합니다. XXXX년 XX월 XX일 ( 년 월 일 형식 추출 정규식 ) import re value = "오늘은 2020년 12월 29일 입니다." pattern = r"\d+년 \d+월 \d+일" regex_result = re.search(pattern, value) result = regex_result.group() 특수문자 제거 정규식 import re regex_text = re.sub('[-=+,#/\?:^$.@*\"※~&%ㆍ!』\\‘|\(\)\[\]\`\'…》]', '', text) XX-XXX-XXXX | XX-XXXX-XXXX | XXX-XXX-XXXX | XXX-XXXX-XXXX ( 전화번호 추출 정규식 ) import re value = "내..
각 페이지별 이미지 변환 ( pdf to jpg ) - pdf2image 활용 여러 페이지로 구성되어있는 pdf 파일을 각 페이지별 이미지로 변환하는 방법에 대해서 적어보려 합니다. 먼저 이 과정을 진행하기 위해서 필요한 라이브러리를 설치합니다. pdf2image A wrapper around the pdftoppm and pdftocairo command line tools to convert PDF to a PIL Image list. pypi.org pip install pdf2image 그 다음 아래의 코드를 활용하여 pdf파일의 각 페이지를 jpg 이미지로 변환하면 됩니다. #-*- coding:utf-8 -*- from pdf2image import convert_from_path file_n..
최근에 API를 만들면서 API 요청에 대한 로그를 남겨야하는 일이 있어 python의 logging을 활용하여 로그를 남기려고 코드를 작성하여 실행하였는데 로그를 찍으면 찍을 수록 중복되어 찍히는 로그가 점점 많아 졌습니다. 수정 전 코드 import os import logging import logging.handlers def request_log(query, subj, prop, top1_prop, elapsed_time): dir_path = "./log_data/kbqa" if not (os.path.isdir(dir_path)): os.makedirs(os.path.join(dir_path)) logger = logging.getLogger("kbqa_search") logger.setLe..
이 글에서는 Mac OS 가 설치된 맥북, 아이맥, 맥 등에서 파이썬을 활용하여 코딩을 할 때 영어나 숫자로 되어있는 이름의 파일은 문제가 없는데 윈도우에서 가져온 파일 중에 한글로 된 파일을 가져와서 데이터를 로드하여 사용하려하면 오류가 나지는 않는데 제대로 파일에 접근하여 다른 작업을 하지 못할때 해결하는 방법에 대해서 적어보려합니다. 원인 먼저 이렇게 한글로 된 파일은 맥과 윈도우에서 한글을 표현할 때 사용하는 방식이 다르기 때문입니다. 맥에서 만든 파일을 윈도우로 가져갔을 때 파일이름의 자모가 분리되어 보이는 문제도 같은 이유로 발생합니다. 맥은 NFD ( Normalization Form Decomposition ) 방법을 윈도우는 NFC ( Normalization Form Compositio..
최근 제가 만든 코드의 실행 속도를 측정해야하는 일이 있었습니다. 다양한 방법이 있지만 저는 datetime을 활용하여 측정해보았습니다. datetime을 활용하는 방법은 다음과 같습니다. import datetime 먼저 datetime 라이브러리를 import 합니다. start_time = datetime.datetime.now() # ( 측정을 하고자 하는 코드 ) end_time = datetime.datetime.now() datetime.datetime.now( ) 를 활용하여 코드 실행 전, 후 시간을 가져옵니다. elapsed_time = end_time - start_time 그 다음 코드 실행 후 시간에서 코드 실행 전 시간을 빼줍니다. 여기서 얻은 elapsed_time을 활용하여 ..
이 글에서는 pdf2image 라이브러리를 활용하여 pdf 파일을 image로 변환하는 방법에 대해서 적어보려 합니다. 먼저 pdf 파일목록을 os 를 활용하여 받아옵니다. import os file_list = os.listdir("./source/") 저는 source 디렉토리에 3개의 pdf 파일을 담아두었기에 os의 listdir을 활용하여 ./source/ 디렉토리의 파일 목록을 가져왔습니다. file_list ['TA_클러스터링_핵심어추출.pdf', 'Word_Embedding_자질을_이용한_한국어_개체명_인식_및_분류.pdf', 'journal_ktsde_9-4_752015269.pdf'] from pdf2image..
Python에서 pdf2image 라이브러리를 활용하여 pdf를 이미지로 변경하려는 코드를 실행하려고하니 아래와 같은 오류가 발생하였습니다. from pdf2image import convert_from_path pages = convert_from_path("./source/" + file_list[0], 500) --------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) ~/anaconda3/lib/python3.7/site-packages/pdf2image/pdf2image.py in pdfinfo_from_path(pdf_path..
pandas를 활용하여 읽어온 csv 파일에서 특정 column에 대한 중복값을 제거하기 위하여 아래와 같이 먼저 파일을 엑셀에서 읽어온 후 import pandas as pd data = pd.read_excel("./42_nia_pqa_QueryTemplate.xlsx") data_fillna = data.fillna(0.0) data_fillna_dropna = data_fillna[data_fillna['property'] != 0.0] data_fillna_dropna.head() 특정 값 이외의 값만 남기기 위하여 위와 같이 코드를 실행하였으나 --------------------------------------------------------------------------- ValueErr..
최근 약 3만개의 한글파일을 첫페이지를 이미지로 500x707크기의 썸네일을 만들어야하는 일이 있었습니다. 30개의 파일이었으면 귀찮더라도 그냥 모든 파일을 하나하나 열어서 첫 페이지를 이미지로 저장하게끔 하였겠지만 3만개의 파일을 하나하나 열어서 하기에는 너무 많은 양이 었습니다. 저는 이를 파이썬으로 코드를 작성하여 한번에! 촤르륵 실행해보기로 하였습니다. 파이썬을 배우고 나서부터는 이런 대량의 파일을 다루는 작업이나 단순 반복 작업, 수많은 파일 속에서 하나의 파일 찾기와 같은 작업을 주로 파이썬을 활용하여 진행하게 되는 것 같습니다. 진행한 환경은 Windows 10 + 한글 2018 + Python3,7 ( pywin32 라이브러리 ) 에서 진행하였습니다. 이 작업을 진행하기 위해서는 무조건! ..
한글 파일에서 첫 페이지만 bmp로 저장한 다음 bmp 파일을 작은 해상도로 resizing 한 후 jpeg로 저장하는 과정에서 이미지가 깨져서 보이는 현상이 있었습니다. 처음에는 한글 API 가 제대로 동작하지 않아서인가 싶었지만 PIL(Pillow) 라이브러리에서 resize 하는 과정에서 발생하는 문제였습니다. 해결 방법 해결하는 방법은 아주 간단했습니다. img = Image.open("./test.bmp").convert("RGB") new_img = img.resize((500, 707), Image.ANTIALIAS) new_img.save("./test.jpg", format='jpeg', quality=100) resize를 하는 과정에서 Image.ANTIALIAS 라는 인자를 넣어주면..