Programming
-
동일한 값으로만 iterable 한 객체가 가득 채워진 경우를 확인할 필요가 있습니다. 예를 들면 C 언어로 초기화된 리눅스 공유메모리는 C 의 null 값인 0x00 으로 초기화 됩니다. 제가 사용하고 있는 프로그램은 4096 Byte의 공유메모리를 초기화 해서 사용하고 있었습니다. 공유 메모리 내용 검증을 하기 위해 특정 상황에 메모리 내용을 찍도록 해놓았는데, 초기화이 쓸데없이 0x00 이 4096개나 스크롤되는게 좀 짜증이 났습니다. 방법을 찾던 중 all 이라는 파이썬 내장(built-in)함수를 알게 되었습니다. all(iterable) 과 같이 호출하고 iterable 값 중에 하나라도 비어 있는 값이 있으면 False 를 반환하고 모두 비어있지 않으면 True 를 반환합니다. 비슷한 함수로..
[python3] 동일 값으로만 채워진 객체 확인하기동일한 값으로만 iterable 한 객체가 가득 채워진 경우를 확인할 필요가 있습니다. 예를 들면 C 언어로 초기화된 리눅스 공유메모리는 C 의 null 값인 0x00 으로 초기화 됩니다. 제가 사용하고 있는 프로그램은 4096 Byte의 공유메모리를 초기화 해서 사용하고 있었습니다. 공유 메모리 내용 검증을 하기 위해 특정 상황에 메모리 내용을 찍도록 해놓았는데, 초기화이 쓸데없이 0x00 이 4096개나 스크롤되는게 좀 짜증이 났습니다. 방법을 찾던 중 all 이라는 파이썬 내장(built-in)함수를 알게 되었습니다. all(iterable) 과 같이 호출하고 iterable 값 중에 하나라도 비어 있는 값이 있으면 False 를 반환하고 모두 비어있지 않으면 True 를 반환합니다. 비슷한 함수로..
2023.02.17 -
기록용으로 남깁니다. 엑셀에서 csv 로 변환한 파일을 읽으려고 하니 오류가 생겼습니다. SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape encoding 을 지정하니 정상 동작합니다. f = open("kk.csv", "r", encoding="utf-8") 그냥 open 말고 pathlib 을 사용해서도 읽고 싶었습니다. data = Path("kk.csv").read_text(encoding="utf-8") 디저트로 윈도우 파일 경로를 그대로 붙여넣었더니 오류가 발생해서 간단히 해결했습니다. "d:\doc\kk.csv" 로 쓰면 \가 escape..
[python3] pathlib 으로 encoding 지정해서 파일 읽기기록용으로 남깁니다. 엑셀에서 csv 로 변환한 파일을 읽으려고 하니 오류가 생겼습니다. SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape encoding 을 지정하니 정상 동작합니다. f = open("kk.csv", "r", encoding="utf-8") 그냥 open 말고 pathlib 을 사용해서도 읽고 싶었습니다. data = Path("kk.csv").read_text(encoding="utf-8") 디저트로 윈도우 파일 경로를 그대로 붙여넣었더니 오류가 발생해서 간단히 해결했습니다. "d:\doc\kk.csv" 로 쓰면 \가 escape..
2023.02.16 -
궁금해서 직접 테스트한 결과를 기록합니다. import timeit # test 용 get 함수. 의미 없으니 분석 불필요 def get(p1, p2, p3, p4): return p1+p3+p4 if isinstance(p4, int) else p1+p3+sum(p4) # dict version def set1(p1, p2, p3=44100): sig = {0: p1, 2: get(p1, p3, 1001, [90, 9000])} return sig.get(p2, get(p1, p3, 1001, 90)) # if else version def set2(p1, p2, p3=44100): if p2 == 0: pass elif p2 == 1: sig = get(p1, p3, 1001, 90) elif p2 ..
[python3] dict vs if else vs list궁금해서 직접 테스트한 결과를 기록합니다. import timeit # test 용 get 함수. 의미 없으니 분석 불필요 def get(p1, p2, p3, p4): return p1+p3+p4 if isinstance(p4, int) else p1+p3+sum(p4) # dict version def set1(p1, p2, p3=44100): sig = {0: p1, 2: get(p1, p3, 1001, [90, 9000])} return sig.get(p2, get(p1, p3, 1001, 90)) # if else version def set2(p1, p2, p3=44100): if p2 == 0: pass elif p2 == 1: sig = get(p1, p3, 1001, 90) elif p2 ..
2023.01.26 -
python3 에서 yaml 파일을 다루려면 pyyaml 패키지를 먼저 설치해야 합니다. python3 -m pip install pyyaml 패키지가 없어서 소스에서 설치할 때는 setup.py 를 실행시킵니다. python3 setup.py install 사용할 때는 yaml 만 언급하면 됩니다. import yaml 읽기 - 방법1 test = yaml.load(file("/home/me/test.yaml", "r"), Loader=yaml.SafeLoader) 읽기 - 방법2 data = """ a: 0 b: [1, 2] c: false d: 2.456 """ test = yaml.load(data, Loader=yaml.SafeLoader) ※참고로 Loader 지정 안하면 경고가 따라다닙니다...
[python3] yaml 다루기python3 에서 yaml 파일을 다루려면 pyyaml 패키지를 먼저 설치해야 합니다. python3 -m pip install pyyaml 패키지가 없어서 소스에서 설치할 때는 setup.py 를 실행시킵니다. python3 setup.py install 사용할 때는 yaml 만 언급하면 됩니다. import yaml 읽기 - 방법1 test = yaml.load(file("/home/me/test.yaml", "r"), Loader=yaml.SafeLoader) 읽기 - 방법2 data = """ a: 0 b: [1, 2] c: false d: 2.456 """ test = yaml.load(data, Loader=yaml.SafeLoader) ※참고로 Loader 지정 안하면 경고가 따라다닙니다...
2023.01.19 -
기록용으로 남깁니다. 리눅스에서 많은 유틸 프로그램이 파이프를 통해 stdin 으로 입력을 전달받아 처리하는 기능이 있습니다. 파이썬은 어떻게 가능할지 찾아봤습니다. import sys data = sys.stdin.readline().strip()
[python3] PIPE 등을 통해 stdin 으로부터 입력 받기기록용으로 남깁니다. 리눅스에서 많은 유틸 프로그램이 파이프를 통해 stdin 으로 입력을 전달받아 처리하는 기능이 있습니다. 파이썬은 어떻게 가능할지 찾아봤습니다. import sys data = sys.stdin.readline().strip()
2023.01.11 -
저장용으로 남깁니다. json data 가 연속되게 딱 붙어서 a.json 파일에 저장되어 있다고 할 때 파이프로 넘겨야 한다면, cat a.json | python -c 'import sys; print(sys.stdin.readline().strip())' | python3 -m json.tool 위 명령으로 실행하면 이쁘게 포맷된 json data 를 볼 수 있습니다.
[python3] 못생긴 연속된 json 데이터 이쁘게 출력하기 cli version저장용으로 남깁니다. json data 가 연속되게 딱 붙어서 a.json 파일에 저장되어 있다고 할 때 파이프로 넘겨야 한다면, cat a.json | python -c 'import sys; print(sys.stdin.readline().strip())' | python3 -m json.tool 위 명령으로 실행하면 이쁘게 포맷된 json data 를 볼 수 있습니다.
2023.01.10 -
기록용으로 남깁니다. push 된 기존 원격 태그 삭제 git push origin :refs/tags/ 기존 태그 다시 매기기. 커밋해시를 지정하지 않으면 HEAD 가 지정됩니다. git tag -fa 고쳐 쓴 태그 push 하기 git push origin master --tags
[git] 이미 발행된 태그 고쳐 쓰기기록용으로 남깁니다. push 된 기존 원격 태그 삭제 git push origin :refs/tags/ 기존 태그 다시 매기기. 커밋해시를 지정하지 않으면 HEAD 가 지정됩니다. git tag -fa 고쳐 쓴 태그 push 하기 git push origin master --tags
2022.09.28 -
제목과 같은 상황이 필요해서 찾아봤지만 pandas.Timedelta() 를 제외하고는 찾아보기 힘들었습니다. pandas 모듈을 쓰지 않으면 수동으로 파싱하는 루틴을 만들어야 했습니다. 그래서 편하게(?) 이용할 수 있는 방법을 찾고 또 테스트했습니다. import pandas import datetime def str_to_timedelta(delta: str = None): if not str: return ptd = pandas.Timedelta(str) td = pandas.Timedelta.to_pytimedelta(ptd) return td def str_to_timedelta2(delta: str = None): if not str: return return pandas.Timedelta(..
[python] "1m" 등의 문자열을 받아 시간으로 변환하기제목과 같은 상황이 필요해서 찾아봤지만 pandas.Timedelta() 를 제외하고는 찾아보기 힘들었습니다. pandas 모듈을 쓰지 않으면 수동으로 파싱하는 루틴을 만들어야 했습니다. 그래서 편하게(?) 이용할 수 있는 방법을 찾고 또 테스트했습니다. import pandas import datetime def str_to_timedelta(delta: str = None): if not str: return ptd = pandas.Timedelta(str) td = pandas.Timedelta.to_pytimedelta(ptd) return td def str_to_timedelta2(delta: str = None): if not str: return return pandas.Timedelta(..
2022.09.28