프로그래밍/Python 82

[Python] 새로운 엑셀파일을 만들고 데이터 입력하기

개요 파이썬으로 엑셀 파일을 다루기 위해서는 "OpenPyXL" 패키지를 이용합니다. 이번 글에서는 새로운 엑셀 파일을 만들어서 자료를 입력하는 것에 대하여 알아 보겠습니다. "OpenPyXL" 패키지 설치 다음과 같이 "OpenPyXL" 패키지를 간단하게 설치합니다. $ pip install OpenPyXL 엑셀파일을 생성하기 엑셀파일을 생성하기 위해서는 "Workbook" 객체를 생성하면 됩니다. from openpyxl import Workbook # 엑셀 객체 생성 workbook = Workbook() # 활성화된 시트 선택 sheet = workbook.active # 엑셀 파일 저장 workbook.save('example.xlsx') 위 예제와 같이 "openpyxl.Workbook()"를..

[Python] libf77blas.so.3: cannot open shared object file

문제점 및 증상 파이썬 프로그램을 실행하였더니, 다음과 같은 오류가 발생하였습니다. pi@raspberrypi:~/work/ $ python3 test_tracking.py Traceback (most recent call last): File "test_tracking.py", line 13, in ... File "/home/pi/.local/lib/python3.7/site-packages/scipy/linalg/misc.py", line 3, in from .blas import get_blas_funcs File "/home/pi/.local/lib/python3.7/site-packages/scipy/linalg/blas.py", line 213, in from scipy.linalg impo..

[Python] numpy.core.multiarray failed to import

문제점 및 증상 새로 설치한 라즈베리파이에서 "opencv"를 이용하여 영상 이미지 처리 관련 프로그램를 실행하였을 때, 다음과 같은 오류가 발생하였습니다. RuntimeError: module compiled against API version 0xf but this version of numpy is 0xd Traceback (most recent call last): File "/opt/flpd/flpd_server.py", line 5, in from cv2 import VideoCapture File "/home/flpd/.local/lib/python3.9/site-packages/cv2/__init__.py", line 181, in bootstrap() File "/home/flpd/.lo..

[Python] libcblas.so.3: cannot open shared object file: No such file or directory

문제점 및 증상 새로 설치한 라즈베리파이에서 "opencv"를 이용하여 서비스를 실행하였을 때, 다음과 같은 오류가 발생하였습니다. flpd@raspberrypi:/opt/flpd $ python flpd_server.py Traceback (most recent call last): File "/opt/flpd/flpd_server.py", line 5, in from cv2 import VideoCapture File "/home/flpd/.local/lib/python3.9/site-packages/cv2/__init__.py", line 181, in bootstrap() File "/home/flpd/.local/lib/python3.9/site-packages/cv2/__init__.py", ..

[Python] struct.pack() 함수 이용시 패팅 주의하기

구조체 형식의 데이터를 바이너리 형식으로 변환할 때 아주 유용한 함수가 struct.pack() 입니다. 주로 통신 프로토콜을 구현할 때 아주 유용하게 쓰이는데, 이 함수를 이용할 때 한 가지 주의할 점이 있습니다. struct.pack() 함수를 이용할 때, 네이티브가 아닌 ‘’, ‘=’ 및 ‘!’ 를 사용할 때는 패딩이 추가되지 않습니다. 다음 예제를 보면, 금방 이해가 되실겁니다. >>> from struct import pack, unpack_from >>> payload = pack('bHbHHiH', 0, 0, 0, 747, 3515, 0, 0) >>> payload b'\x00\x00\x00\x00\x00\x00\xeb\x02\xbb\r\x00\x00\x00\x00\x00\x00\x00\x0..

[Python] 파일 복사(copy)

개요 파일을 복사(Copy)하는 방법에 대하여 정리해 둡니다. 파일을 복사하기 위해서 shutil 패키지의 copy(), copyfile(), copy2() 함수들을 이용합니다. shutil.copy(src, dst) 기본적으로 "src" 원본 파일을 "dst" 대상 파일로 복사합니다. "dst" 대상 파일의 생성 시각은 현재 시각으로 설정됩니다. "dst"에 폴더명을 입력한 경우, 해당 폴더로 파일을 복사합니다. Linux 계열에서는 파일의 권한 모드(chmod 참조)를 복사하지만, 파일의 생성과 수정 시간과 같은 다른 메타 데이터는 복사되지 않습니다. 메타데이터까지 복사하려는 경우에는 shutil.copy2() 함수를 이용해야 합니다. shutil.copyfile(src, dst) 기본적으로 "src..

[Python] 프로세스간 데이터 공유 : Array

개요 다중 프로세스간 데이터를 공유할 수 있는 다양한 클래스들이 "multiprocessing"에서 제공됩니다. Array, Pipe, Queue, Value 그 중에서 Array를 이용한 데이터 공유 방법에 대하여 정리해 둡니다. Array 객체 생성 Array 클래스로 객체를 생성하는 방법은 다음과 같습니다. list 객체와는 약간 다릅니다. from multiprocessing import Array arr = Array('i', range(10)) print(arr) print(arr[:]) arr2 = Array('i', [0, 0, 0, 1, 2, 3, 4]) print(arr2) print(arr2[:]) 위 코드의 실행 결과는 다음과 같습니다. [0, 1, 2, 3, 4, 5, 6, 7, ..

[Python] CCPD 예제 동작 확인

번호판 인식 관련하여 https://github.com/detectRecog/CCPD 예제가 있어서 윈도우 CUDA 환경에서 동작시키기 위한 시행착오를 정리해 둡니다. PyTorch 이전버전 패키지 설치 CCPD 예제가 만들어질 당시에는 pytorch-0.3.1 cuda80 기반으로 작성된듯 싶은데, 지금은 엄청나게 업그레이드가 되어서 CCPD 예제를 현재 패키지 버전에서 그대로 실행할 수가 없었습니다. torch-1.11 버전에서는 소스 호환성 문제로 동작이 안되기 때문에 pytorch로 다운그레이드 후에 예제가 정상적으로 동작했습니다. 문제는 pytorch-0.3.1 cuda80를 더 이상 지원하지 않아, pip 등으로 설치할 수가 없었습니다. PyTorch 최신버전 설치 : https://pytor..

[Python] Windows 10에 OpenVino 개발환경 만들기

OpenVINO™ Runtime 설치 OpenVino로 개발한 프로그램이 정상적으로 동작할 수 있도록 Runtime을 다운로드 받아서 설치합니다. https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html 페이지에서 "Runtime"과 "Offline Installer"를 선택하여, "w_openvino_toolkit_p_2022.1.0.643_offline.exe" 파일을 다운로드 받아서 설치하였습니다. OpenVino 개발을 위한 가상환경 생성 파워쉘에서 다음과 같이 OpenVino 개발을 위한 "ov2022.1"이라는 가상환경을 설정하고, 활성화합니다. PS C:\Users\hanwh> cd D:/Dev..

[Python] struct와 numpy의 bytes 만드는 성능 비교

개요 구조체나 배열을 bytes로 만드는데, struct나 numpy를 혼용해서 사용해 왔습니다. 그러다 문득 어느 것이 더 좋은 성능을 내는지 궁금해져서 아래와 같은 성능 비교 시험을 해 보았습니다. bytes 변환 예제 아래는 동일한 구조의 정보를 bytes로 변환하는 예제로, 하나는 struct.pack() 함수를 이용하였고 다른 하나는 numpy array의 tobytes() 함수를 이용한 것입니다. from struct import pack import numpy as np struct_result = pack('

728x90