Programming/python
-
원격으로 작업을 할 일이 생겼습니다. 시간이 좀 걸리는 파이썬 패키지 설치 작업이었습니다. 이를 여러 장비에다 설치하려고 하는데 기존 코드는 장비 하나하나 일일이 접속해서 패키지도 하나하나 다 설치 완료 해야 다음 항목으로 넘어갈 수 있었습니다. 각 장비에서 소요되는 시간은 3분이 채 안되는데 전체 장비가 400여대 가까이 되니 1200분... 즉 20시간이 소요되는 겁니다... 이를 줄여보고자 며칠 째 집에도 제 때 못들어가고 작업하다가 대충 동작하는 코드를 완성해서 그 일부를 공유합니다. connect 인자는 대충 아실겁니다. known_hosts=None 은 등록되지 않은 장비에 접속할 때 known_hosts 에 등록할 것인지 물어보게 되는데 (ssh 명령으로는 -o StrictHostKeyChe..
[python3] asyncssh + nohup command원격으로 작업을 할 일이 생겼습니다. 시간이 좀 걸리는 파이썬 패키지 설치 작업이었습니다. 이를 여러 장비에다 설치하려고 하는데 기존 코드는 장비 하나하나 일일이 접속해서 패키지도 하나하나 다 설치 완료 해야 다음 항목으로 넘어갈 수 있었습니다. 각 장비에서 소요되는 시간은 3분이 채 안되는데 전체 장비가 400여대 가까이 되니 1200분... 즉 20시간이 소요되는 겁니다... 이를 줄여보고자 며칠 째 집에도 제 때 못들어가고 작업하다가 대충 동작하는 코드를 완성해서 그 일부를 공유합니다. connect 인자는 대충 아실겁니다. known_hosts=None 은 등록되지 않은 장비에 접속할 때 known_hosts 에 등록할 것인지 물어보게 되는데 (ssh 명령으로는 -o StrictHostKeyChe..
2023.09.22 -
제목과 같은 오류가 발생했을 때 chatgpt 따위는 도움을 주지 않습니다... python3 -m pip install -U pyopenssl 이 명령으로 마음의 평화를 찾았습니다.
[python3] AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'제목과 같은 오류가 발생했을 때 chatgpt 따위는 도움을 주지 않습니다... python3 -m pip install -U pyopenssl 이 명령으로 마음의 평화를 찾았습니다.
2023.09.19 -
기록용으로 남깁니다. 쉬운 내용인데 가끔 가물가물해서 정리합니다. 문자열이 s = "God is my judge" 일 때 s[::-1] 로 뒤집힌 값을 얻을 수 있습니다. 참고로 이 슬라이스 인덱싱은 [시작위치:끝위치:step/stride/보폭] 으로 지정할 수 있습니다. 끝위치 전까지로 끝위치 문자는 포함되지 않습니다. s 는 s[0::1] 과 같습니다. 다른 방법(for 를 사용한 c 방법, 리스트로 변환하는 방법)들이 있지만 이 방법만 기억하셔도 좋을 것 같습니다. 깔끔하니까요!!
[python] 문자열 뒤집기기록용으로 남깁니다. 쉬운 내용인데 가끔 가물가물해서 정리합니다. 문자열이 s = "God is my judge" 일 때 s[::-1] 로 뒤집힌 값을 얻을 수 있습니다. 참고로 이 슬라이스 인덱싱은 [시작위치:끝위치:step/stride/보폭] 으로 지정할 수 있습니다. 끝위치 전까지로 끝위치 문자는 포함되지 않습니다. s 는 s[0::1] 과 같습니다. 다른 방법(for 를 사용한 c 방법, 리스트로 변환하는 방법)들이 있지만 이 방법만 기억하셔도 좋을 것 같습니다. 깔끔하니까요!!
2023.06.19 -
기록용으로 남깁니다. 구글 코랩에서 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") 명령으로 마운트 명령을 내리면 구글 계정 연동 페이지 뜨면서 권한 묻고 할 겁니다. 내가 쓰려..
[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") 명령으로 마운트 명령을 내리면 구글 계정 연동 페이지 뜨면서 권한 묻고 할 겁니다. 내가 쓰려..
2023.05.31 -
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..
[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..
2023.05.24 -
3.7 ~ 3.8 https://python.flowdas.com/whatsnew/3.8.html 3.8 ~ 3.9 https://python.flowdas.com/whatsnew/3.9.html 3.9 ~ 3.10 https://docs.python.org/ko/3/whatsnew/3.10.html 3.10 ~ 3.11 https://docs.python.org/ko/3/whatsnew/3.11.html
[python3] 버전별 차이 정리(작성중)3.7 ~ 3.8 https://python.flowdas.com/whatsnew/3.8.html 3.8 ~ 3.9 https://python.flowdas.com/whatsnew/3.9.html 3.9 ~ 3.10 https://docs.python.org/ko/3/whatsnew/3.10.html 3.10 ~ 3.11 https://docs.python.org/ko/3/whatsnew/3.11.html
2023.05.03 -
동일한 값으로만 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