프로그래밍/Python 97

[python] JSON 검증 (validation)

jsonschema를 이용하면 JSON 데이터가 원하는 형식 (schema)에 맞는지 확인하여 처리할 수 있습니다. jsonschema를 이용하여 JSON 데이터를 확인하는 기본적인 방법은 아래와 같습니다. from jsonschema import validate # A sample schema, like what we'd get from json.load() schema = { "type" : "object", "properties" : { "price" : {"type" : "number"}, "name" : {"type" : "string"}, }, } # If no exception is raised by validate(), the instance is valid. validate(instanc..

[python] OpenCV - 이미지의 폭과 높이 구하기

개요OpenCV에서 이미지에 대한 폭(width)과 높이(height)를 구하는 방법을 알아 보겠습니다.이미지의 폭과 높이 구하는 방법이미지에 대한 폭과 높이는 다음과 같이 img.shape로부터 구할 수 있습니다.from cv2 import imreadimg = imread('image.jpg')# 이미지 크기 구하기 ; 높이, 폭 순서 주의height, width = img.shape[:2]print(f"이미지 폭: {width} / 이미지 높이: {height}")# 컬러/흑백 구분if len(img.shape) == 2: print("흑백 이미지입니다.")else: print("컬러 이미지입니다.")위 예제 코드와 같이 "height, width = img.shape[:2]" 이렇게 수..

[Git] 특정 커밋(commit)로 이동하기 - checkout

git 커밋(commit) 이력 확인 이동할 특정 커밋을 확인하기 위하여 커밋 이력을 확인해야할 때, "log" 명령을 이용합니다. $ git log commit 7a0ad29e32bf05c56fa5039249d7a40d7f0a6d63 (HEAD -> master, origin/master, origin/HEAD) Author: Wonhee Han Date: Sat Mar 2 17:40:21 2021 +0900 ADD: about NaN commit 66ca530eff53437da4cda20a8c0f764cfe5c8b3f Author: Wonhee Han Date: Mon Nov 27 22:50:43 2020 +0900 수정: 서버에서 API 호출하는 방식으로 복구 commit b4c3d555521692..

쿼리 결과를 dict, json 형태로 한번에 바꾸는 방법

RESTful API로 데이터베이스에 특정 조건으로 데이터를 조회한 결과를 JSON 형태로 반환하는 API를 작성하면서, JSON 결과를 만드는 부분을 다음과 같이 일일이 dict 형태로 만들어 주다 보니, 새로운 쿼리를 작성할 때마다 dict 형태로 만들어주는 것 자체도 어려운 것은 아니지만, 의외로 손이 많이 가는 작업이었습니다. 작업중 실수로 오타라도 생기면, 그걸 찾기도 쉽지 않아서 간단하게 데이터베이스 테이블의 컬럼명과 동일한 형태로 결과를 한번에 만들어 주는 것은 없는지 찾아보게 되었습니다. query = f""" SELECT M.member_no, M.member_id, '*' AS password, M.member_name, M.phone_no , M.email, M.tel_no, M.re..

[python] str.find()와 str.index() 함수의 차이

파이썬 문자열에서 특정 문자열을 검색하기 위하여 find()와 index() 함수를 제공하고 있습니다. 두 함수 모두 검색할 문자열을 찾았을 경우에는 해당 순번(index)을 반환하는 것은 동일하나 검색 대상 문자열을 찾지 못한 경우에는 다르게 동작합니다. find() 함수가 검색 대상 문자열을 찾지 못한 경우에 -1을 반환하지만, index() 함수는 "ValueError: substring not found" 오류가 발생합니다. 다음은 두 함수간의 차이를 보여주는 예시입니다. source = 'ABCDEFG' print(f"{source.find('B')=}") print(f"{source.index('B')=}") print('----------') print(f"{source.find('b')=}..

[python] int를 byte로 변환하는 방법 (how to convert int to bytes)

int를 byte로 변환하는 방법 크게 두 가지가 방법이 있습니다. 첫 번째는 to_bytes() 함수를 이용하는 방법입니다. 사용 방법은 다음과 같습니다. print('to_bytes()') print((258).to_bytes(2, byteorder="little")) print((258).to_bytes(2, byteorder="big")) print((258).to_bytes(4, byteorder="little", signed=True)) #print((-258).to_bytes(4, byteorder="little", signed=False)) #OverflowError: can't convert negative int to unsigned print((-258000).to_bytes(4, b..

[Python] 이진 파일로부터 int array 읽어 들이는 3가지 방법 성능 비교

앞 글에 이어서 "이진 파일로부터 int array 읽어 들이는 3가지 방법들"간의 성능을 비교해 보도록 하겠습니다. 세 방법간 성능 비교를 위하여 아래와 같은 코드를 작성하였습니다. "cam-20220503_1255.mp4.idx"에는 int32 정수값이 18,001여개가 들어 있는 이진파일입니다. # comparision load int array import timeit setup = """ import numpy as np import os import struct # index has 18000 int32 video_file_name = 'cam-20220503_1255.mp4' video_index_file = open(f'{video_file_name}.idx', 'rb') video_ind..

[Python] 이진 파일로부터 int array 읽어 들이는 3가지 방법들

파일(버퍼)로부터 int array를 읽어 들이는 3가지 방법을 알아 보도록 하겠습니다. "cam-20220503_1255.mp4.idx"에는 int32 정수값이 18,001 개가 들어 있는 이진파일입니다. "cam-20220503_1255.mp4.idx" 파일로부터 18,001 개의 정수를 읽어 배열(list, tuple)로 만드는 3가지 방법을 아래와 같이 예제로 작성하였습니다. # *.idx 파일을 list()로 읽어들이는 예제 import numpy as np import os import struct video_file_name = 'demo/cam-20220503_1255.mp4' video_index_file = open(f'{video_file_name}.idx', 'rb') # move ..

TypeError: Boolean value of this clause is not defined 해결하기

문제점 및 증상 sqlalchemy + mysqlconnector 패키지를 이용하여 MariaDB를 연동하는 작업을 하던중에 갑작스럽게 다음과 같은 오류를 만나게 되었습니다. File "C:\Dev\Python\Python38\lib\site-packages\mysql\connector\cursor.py", line 532, in execute if not operation: File "C:\Dev\Python\Python38\lib\site-packages\sqlalchemy\sql\elements.py", line 594, in __bool__ raise TypeError("Boolean value of this clause is not defined") TypeError: Boolean value ..

파이썬의 장점 / 단점

https://python.land/why-people-hate-python 요 근래 파이썬을 깊게 공부하면서 느껴지는 바가 있었는데, 우연하게 위 글을 접하고, 파이썬을 공부하며 느낀점과 함께 생각난 바를 정리해 봅니다. 파이썬의 가장 큰 장점으로 배우기 쉽다는 점을 가장 큰 장점으로 꼽습니다. 배우기 쉬운 이유는 언어적 특징으로 보면, 널리 알려진 C나, Java와는 다르게 dynamic typing을 지원하여 데이터형이나, 클래스를 생각하지 않고 변수를 쉽게 선언하고 만들 수 있습니다. 또한 파이썬에서 모든 것이 클래스가 인스턴스화된 객체로 취급되며, 언제든지 필요한 속성 및 메소드들을 손쉽게 추가할 수 있는데다가 복잡한 가시성이 없이 모든 것이 public 으로 공개되어 있습니다. 추상화, 추상 ..

728x90