본문 바로가기
반응형

Python113

Python - Zipfile 한글 파일이름 깨짐 해결하기 Zipfile에서 압축을 해제한 파일의 한글깨짐이 발생하는데 이는 인코딩 문제이다. 이를 해결하기 위해서는 파일 이름 정보를 압축을 해제하기 전에 디코딩을 진행해야 한다. 아래 euc-kr 으로 디코딩을 하는 방식으로 파일에서 사용된 한글을 정상적으로 인식시킬 수 있다. import zipfile def extract_korean_zip(zip_path, extract_path): with zipfile.ZipFile(zip_path, 'r') as zip_ref: for zip_info in zip_ref.infolist(): # 깨진 한글 파일 이름 복원 filename = zip_info.filename.encode('cp437').decode('euc-kr') # 폴더 경로 처리 if filena.. 2024. 3. 1.
Sqlachemy - 특정 날짜 하루의 데이터를 가져오기 다음은 SQLAlchemy를 사용하여 특정 날짜 하루의 데이터를 가져오는 코드이다. from sqlalchemy import create_engine from sqlalchemy.orm import Session # 데이터베이스 연결 설정 engine = create_engine("postgresql://user:password@localhost/database") # 세션 생성 session = Session(engine) # 특정 날짜 date = "2024-01-07" # 쿼리 query = session.query(Table).filter(Table.created_at >= date).filter(Table.created_at < date + timedelta(days=1)) # 결과 조회 res.. 2024. 2. 29.
Python - Missing optional dependency 'openpyxl' 해결 Missing optional dependency 'openpyxl' Pandas의 엑셀 읽기의 호환성을 위해서 보통 openpyxl 을 사용한다. openpyxl을 별도로 제공되는 Python용의 엑셀 라이브러리로써, 현재 3.1.2버전까지 나왔으며, Pandas에서 제공하는 기본 엑셀 라이브러리보다 좋은 호환성을 제공하여 많이 이용한다. 위 에러는 Pandas에서 openpyxl를 사용하는데, 해당 라이브러가 없을 때 발생한다. pd.read_excel(file_path, engine='openpyxl') 즉 openpyxl를 이용하고자 한다면, pip를 이용해서 설치하도록 하자. pip install openpyxl 2024. 2. 29.
Python - URL, WebContent Encode / Decode 하기 HTTP 호출을 진행하면, URL을 인코딩하거나 디코딩하는 일을 자주 경험하게 된다. 이때 주의할 점음 문자열을 encode/decode 를 Byte 레벨로하는 것이 아닌 문자열 수준으로 진행해주어야 한다. 즉 전체 문자열이 아닌 일부 UTF-8 로 작성된 문자열만 변환해주면 된다. 이를 효과적으로 해주는 라이브러리가 urllib 의 parse의 quote와 unquote 를 통해 진행할 수 있다. urllib.parse — URL을 구성 요소로 구문 분석 — Python 3.12.2 문서 urllib.parse — Parse URLs into components Source code: Lib/urllib/parse.py This module defines a standard interface to br.. 2024. 2. 29.
Python - Header Content-Disposition의 UTF-8에서 Filename 가져오기 웹을 이용해서 파일을 다운로드하였을때, 파일이름에 대한 정보가 필요한 경우가 있다. 이때 유용하게 사용할 수 있는 헤더 정보가 있는데, 바로 Content-Disposition 이다. Content-Disposition 에는 보통 파일 이름 정보를 함께 보내주는 경우가 있다. 하지만 한글인 경우 UTF-8로 디코딩을 해야 정상적으로 확인이 가능하다. 여러가지로 코드를 테스트해본 결과 unquote를 활용하여 디코딩이 가능하다는 것을 알게 되었는데, 아래 코드를 이용해서 파일 이름정보를 가져올 수 있다. from urllib import parse def get_filename(source_header): fname = re.findall("filename\*=([^;]+)", source_header, .. 2024. 2. 29.
Python - Error cv2 (-215:Assertion failed) !ssize.empty() in function 'resize' 이오류를 해결하기까지 시간이 조금 소요되었는데, 가장 시도해볼 수 있는 방법은 바로 사이즈이다. 필자가 확인한 내용으로는 사이즈가 정상 범주에서 너무 크기 때문에 발생하게 된다. 쉽게 확인하는 방법은 cv2.imread(imagepath) 를 이용해서 읽어보는 것이다. 그럼 오유 원인이 사이즈인데, 결과는 ssize.empty로 떨어지는 경우가 많다. 물론 이를 위해서 파일 경로 문제라던가, 다양한 문제가 있지만, 필자는 다음과 같은 코드를 이용해서 사이즈를 조정하면 해소가 가능하다. from PIL import Image image = Image.open(image_path) re_height = round(image.height / 2) re_width = round(image.width / 2) i.. 2024. 2. 29.
Docker - exec, 컨테이너 명령 실행/세션 연결 Docker를 사용하다보면 실행중인 컨테이너에서 간단한 작업이 필요할 때가 있다. 이때 유용하게 사용할 수 있는 명령이 바로 exec 명령으로, 이 명령을 어떻게 사용할 수 있는지 간단히 알아보도록 하겠다. exec 명령은 현재 실행중인 컨테이너에 명령을 실행하게 해주는 명령으로 가장 기본적으로 아래 두가지 방식으로 사용된다. 명령 실행 가장 간편하게 사용할 수 있는 방법으로, docker exec를 통해 명령 실행이 가능하다. docker exec 아래와 같이 현재 경로를 확인하거나 간단하게 운영시 필요한 작업등이 가능하다. 필자 역시 주로 ps 명령을 이용해서 Docker 컨테이너 내 프로세스 상태를 확인하는 작업을 종종한다. 세션 연결 조금 더 많은 작업이 필요한 경우 세션을 직접 연결해서도 작업이.. 2024. 2. 28.
JIRA - 이슈 벌크 삭제(Bulk Delete) API 이슈 벌크 삭제(Bulk Delete) API 이슈가 많은 경우 이를 한번에 삭제하기는 어렵다, 여기에서는 특정 날짜를 기준으로 그 이상 날짜가 된 경우 삭제하는 것인데, 내부적으로 이슈의 생성 날짜의 필드 기본값은 created 로 되어 있다. 즉 특정 프로젝트 와 날짜가 지난 데이터는 0: for delete_item in delete_issues: try: delete_item.delete() time.sleep(1) except Exception as error: print(error) 만약 특정 상태인 값만 지정하고 싶다면 status를 추가해 주면 된다. 필자는 JIRA의 기본 상태인 "To Do" 인 경우 삭제하는 것으로 쿼리 값을 지정해 보았다. project = FTCO AND created 2024. 2. 28.
Python - OpenCV partially initialized module 'cv2' has no attribute 'gapi_wip_gst_GStreamerPipeline' OpenCV를 이용하다보면, 발생하는 오류로써, OpenCV를 별도로 설치할때 보통 오류가 발생하게 된다. 이 문제점은 버전 호환성 문제라고 하는데, 문제가 발생하는 버전을 제거하고, opencv-python==4.5.5.64 로 설치하여 해결이 가능하다. pip uninstall opencv-python pip install opencv-python==4.5.5.64 2024. 2. 28.
반응형