IT/python 48

[python] 문자열 뒤집기

기록용으로 남깁니다. 쉬운 내용인데 가끔 가물가물해서 정리합니다. 문자열이 s = "God is my judge" 일 때 s[::-1] 로 뒤집힌 값을 얻을 수 있습니다. 참고로 이 슬라이스 인덱싱은 [시작위치:끝위치:step/stride/보폭] 으로 지정할 수 있습니다. 끝위치 전까지로 끝위치 문자는 포함되지 않습니다. s 는 s[0::1] 과 같습니다. 다른 방법(for 를 사용한 c 방법, 리스트로 변환하는 방법)들이 있지만 이 방법만 기억하셔도 좋을 것 같습니다. 깔끔하니까요!!

IT/python 2023.06.19

[python][colab] 구글 드라이브 로그인하고 파일 접근하기

기록용으로 남깁니다. 구글 코랩에서 ipynb 파일 같은 것을 열었을 때 구글 드라이브에 있는 데이터 파일에 접근할 수 있습니다. from google.colab import drive import pandas as pd drive.mount("/content/drive") df = pd.read_csv("/content/drive/MyDrive/abcd.csv") 먼저 google.colab 의 drive 를 import 합니다. 코랩 안에서는 당연히 별도의 설치 없이 사용할 수 있습니다. 그 외의 환경에서는 멍개님의 글 과 같이 복잡한 방법이 필요합니다. drive.mount("/content/drive") 명령으로 마운트 명령을 내리면 구글 계정 연동 페이지 뜨면서 권한 묻고 할 겁니다. 내가 쓰려..

IT/python 2023.05.31

[python3] 파이썬 프로세스 중복 실행 여부 확인

def check_duplicate_execution(exact_python_file_name, pid): for p in psutil.process_iter(): cmd = p.cmdline() if cmd and exact_python_file_name in cmd and p.pid != pid: return True return False 파라미터는 비교할 파이썬 파일 이름인데 여기에서는 이것을 실행한 내 프로세스의 파일 이름을 전달합니다. psutil.process_iter() 로 psutil.Process객체를 하나씩 가져와서 cmdline() 으로 얻어온 명령 줄에 해당 이름이 존재하는지 확인가능합니다. cmdline() 은 리스트로 되어 있습니다. 보통은 파이썬 스크립트 이름은 cmdline..

IT/python 2023.05.24

[python3] 동일 값으로만 채워진 객체 확인하기

동일한 값으로만 iterable 한 객체가 가득 채워진 경우를 확인할 필요가 있습니다. 예를 들면 C 언어로 초기화된 리눅스 공유메모리는 C 의 null 값인 0x00 으로 초기화 됩니다. 제가 사용하고 있는 프로그램은 4096 Byte의 공유메모리를 초기화 해서 사용하고 있었습니다. 공유 메모리 내용 검증을 하기 위해 특정 상황에 메모리 내용을 찍도록 해놓았는데, 초기화이 쓸데없이 0x00 이 4096개나 스크롤되는게 좀 짜증이 났습니다. 방법을 찾던 중 all 이라는 파이썬 내장(built-in)함수를 알게 되었습니다. all(iterable) 과 같이 호출하고 iterable 값 중에 하나라도 비어 있는 값이 있으면 False 를 반환하고 모두 비어있지 않으면 True 를 반환합니다. 비슷한 함수로..

IT/python 2023.02.17

[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..

IT/python 2023.02.16

[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 ..

IT/python 2023.01.26

[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 지정 안하면 경고가 따라다닙니다...

IT/python 2023.01.19