python3 19

[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][opencv][windows 10]개발 환경 구축하기

라 쓰고 간단한 나만의 해결 기록이라 읽음.. 그냥 pip3 로 opencv-python 을 설치하거나 opencv-contrib-python, opencv-python-headless 등의 패키지로는 전혀 해결이 안되었습니다. import cv2 만 실행해도 오류가 발생했었거든요... (venvimg) D:\Users\JHG\Documents\work\wiznet\project\SKP\ARHIS\AI\30034>python3 -c "import cv2" Traceback (most recent call last): File "", line 1, in ModuleNotFoundError: No module named 'cv2' (venvimg) D:\Users\JHG\Documents\work\wizne..

IT/python 2022.07.22

[ssh] 명령 주기

직접 ssh 로 접속해서 명령을 실행하면 아무래도 인수(parameter, argument)가 많아도 실행이 잘 됩니다만, 이를 원격에서 ssh 명령을 사용해서 실행하면 인수가 제대로 전달되지 않는 경우가 있습니다. sshpass -ppassword ssh pi@localhost -p 11111 ls -al apple banana | grep apple 위와 같이 명령을 내리면 banana 이하 절이 문제가 있거나 원격이 아닌 로컬에서 해석되거나 하는 경우가 있습니다. 이런 경우 명령에 해당하는 부분을 모두 ' (따옴표) 로 감싸주면 됩니다. sshpass -ppassword ssh pi@localhost -p 11111 'ls -al apple banana | grep apple' 다만, 명령에 따옴표..

IT/shell 2022.05.18

[python] SystemError: new style getargs format but argument is not a tuple 오류

보통 여러 개 원소 지정할 때 마지막에 쉼표를 붙이던게 버릇이 되서 발생한 실수를 기록용으로 남깁니다... def writebuffer(bufidx): pass def abcd(): buflen = 0 t1 = threading.Thread(target=writebuffer, args=(buflen,)) 이 코드를 실행하면 제목과 같은 오류가 발생합니다. 뭐가 잘못일까 하고 전체 코드를 주석처리해보고 하다가 (buflen,) 때문에 발생한 것을 알게 되었습니다. Thread 함수에 파라미터가 한 개인 함수를 부를 때는 그저 args=(var) 하면 되었을 것을... 이것으로 소비한 시간이 너무 길어서 허탈하네요.

IT/python 2022.01.13

[python][virtualenv] 이미 가상 환경이 구축된 이후 설치된 전역 패키지 가져오기..

기록용으로 남깁니다. virtualenv 를 사용하다 보니 왠만한 것은 source ~/wiznet/venvA/bin/activate 한 다음에 정상적으로 pip3 로 설치 가능하지만 apt 패키지로 제공되는 것들은 root 계정 권한으로 설치되기 때문에 이미 virtualenv 를 구성한 다음에는 이를 자동적으로 참조할 방법은 없습니다. 현재 확인한 방법으로는 이를 찾아서 수동으로 복사하는 것입니다. 일단 제가 설치한 apt 패키지는 rpi.gpio 패키지입니다. sudo apt install rpi.gpio 전역 저장소를 찾습니다. find /usr -name 'site-packages' /usr/lib/pypy/lib-python/2.7/site-packages /usr/local/lib/pytho..

IT/python 2021.09.13

[python] 윈도우10에서 python.exe 실행 경로 확인하기

venv 나 virtualenv 를 쓸 때 내 환경이 내가 지정한 env 에 잘 연결되었나 확인하고 싶을 때가 있습니다. 참고 글에 따르면 sys.path 를 출력해보면 알 수 있다고 합니다. 다만 vscode 기준 해당 폴더의 터미널에서 python3 를 실행시켜서 출력해보면 여전히 전역 python 경로가 출력됩니다. python3.exe 자체가 PATH 가 전역으로 잡혀있는 바이너리로 실행이 되었기 때문인데요 해당 테스트 코드를 cmd 상에서 하지 않고 빈 .py 파일을 만들어서 해당 코드에서 확인하면 현재 venv 에 포함된 경로를 의존하고 있음을 확인할 수 있습니다. import sys for p in sys.path: print(p) # or just sys.path # print(sys.pa..

IT/python 2021.07.01

csv 파일 작성시 excel 에서 숫자 텍스트가 엉뚱하게 표시되는 문제

기록용으로 남깁니다. 숫자 문자, 예를 들면 날짜시간 정보가 20210101123459 이렇게 있고, 이 값이 csv 에서 20210101123459, 라는 형태로 작성했다면, 이를 excel에서 열었을 때 2.02101E+13 과 같은 과학적 기수법으로만 표시되고 서식을 아무리 텍스트로 지정해도 바뀌지 않는 문제가 있습니다. 값 입력 칸을 한 번 클릭하면 바뀌긴 하는데 매 셀을 일일이 클릭해줘야 합니다.. 이 글을 참고해서 해결할 수 있었습니다. "=""20210101123459""" 이런 형태로 ""로 둘러싸주고 등호 기호= 를 앞에 추가하고 맨 뒤에 아무것도 없는 "" 따옴표를 붙여주고 엑셀에서 읽으면 정상적으로 문자로 인식됩니다. 파이썬에서 csv 를 생성할 때 발견한 문제였는데요, 이 문자열을 ..

IT/office 2021.06.15

[python] 소켓이 사용중인 포트 확인하기

한개의 소켓을 사용할 때는 당연히 작성자가 포트를 지정했으니 포트값이 지정된 변수를 가져오면 쉽게 알 수 있습니다. 다만, 여러 개의 포트를 열었을 경우 반복문 등을 통해 실행하면 어떤 포트로 들어온 것인지 확인해야 하는 경우가 있습니다. getsockname() 함수를 사용해서 현재 소켓에 bind 된 ip와 포트 정보를 확인할 수 있습니다. import socket import select sockets = [] for port in [555, 777]: server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_socket.bind(("0.0.0.0", port)) sockets.append(server_socket) empty ..

IT/python 2021.02.09