프로그래밍/Python 82

[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 으로 공개되어 있습니다. 추상화, 추상 ..

문자열을 날짜로 변환하는 방법

자꾸만 헷갈리는 파이썬에서 문자열을 날짜로 변환하는 방법에 대하여 정리해 둡니다. datetime.datetime.strptime() 함수를 이용하면, 간단하게 문자열을 날짜로 변환할 수 있습니다. # 날짜 변환에 대한 예제 import datetime as dt # value_error = dt.datetime.strptime('02-4-23', '%y-%m-%D') # ValueError: 'D' is a bad directive in format '%y-%m-%D' converted_day = dt.datetime.strptime('02-4-23', '%y-%M-%d') print(converted_day) # O..

[Python] os.mkdir() 폴더 생성시, "FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다" 오류 대처

문제점 및 증상 폴더 생성을 위하여 다음과 같이 코드를 작성하였습니다. img_path = current_app.root_path + '/static/img/receipts/' + datetime.datetime.now().strftime('%Y/%m/') if not os.path.exists(img_path): os.mkdir(img_path) 폴더를 생성하는 과정에 다음과 같은 오류가 발생하였습니다. File "D:\Dev\Web\accounting\server\app\controllers\api\receipt_file.py", line 28, in post os.mkdir(img_path) FileNotFoundError: [WinError 3] 지정된 경로를 찾을 수 없습니다: 'D:\\Dev\..

[python] len() 함수 vs count() 메소드

자바 같은 경우, "length" 속성을 통하여 문자열의 길이나, 배열의 개수를 알 수 있었는데, 파이썬의 경우에는 len() 함수를 이용합니다. 일부 클래스에서는 count() 메소드를 통하여 항목의 개수를 반환하는 경우가 있었지만, 파이썬은 약간 다릅니다. 시퀀스나 컬렉션에 대한 항목 개수를 얻기 위해서는 len() 함수를 이용하고, 시퀀스 객체에 대한 count() 메소드의 경우, 입력한 서브 시퀀스가 중첩되지 않게 나타나는 회수를 반환합니다. 각각의 함수들에 대해 자세히 살펴보면 다음과 같습니다. len() 함수 파이썬에서 시퀀스(문자열, bytes, bytearray, 리스트, 튜플, range 등) 또는 컬렉션(딕셔너리, set)의 길이 (항목 수)를 얻는데 이용합니다. import array..

[Python] "Unicode-objects must be encoded before hashing" 오류 대처법

hashlib 패키지의 md5() 함수를 이용하여 문자열에 대한 해쉬값을 구하는 예제입니다. import hashlib text = 'asdf' enc = hashlib.md5() enc.update(text) encText = enc.hexdigest() print(encText) 그러나, 실행하면 다음과 같은 오류가 발생하였습니다. Traceback (most recent call last): File "d:\Dev\Python\Test\hello.py", line 8, in enc.update(text) TypeError: Unicode-objects must be encoded before hashing MD5 해쉬값을 구하기 위해서, update() 함수에 전달해야할 데이터는 byte array..

datetime 다루기 (날짜 연산 및 timezone)

문자열에서 datetime 객체로 변환 문자열에서 날짜를 추출하여 datetime 객체를 얻기 위해서는 datetime.strptime() 클래스 함수를 이용합니다. import datetime as dt date_string = '2020-12-10T04:26:45' date = dt.datetime.strptime(date_string, '%Y-%m-%dT%H:%M:%S') print(date) # 실행 결과 # 2020-12-10 04:26:45 datetime.strptime() 클래스 함수에서 지정할 수 있는 더 자세한 날짜 형식은 아래 참고자료 ( "datetime — 기본 날짜와 시간 형" )를 확인해 보시면 됩니다. datetime 연산 (날짜 및 시간 연산) 날짜 연산은 datetime...

728x90