Python 14

[python] 코드가 실행중일 때, 디버깅 중인지 확인하는 방법

개요파이썬으로 만든 코드를 디버깅할 때와 실제 배포하여 실행될 때 서로 다른 동작을 시켜야할 경우가 있습니다. 디버깅할 때는 디버깅을 위하여 보다 상세한 정보를 출력한다던지 성능과 관계없이 디버깅을 위한 부분을 더 추가해 주게 되는데, 실제 실행할 때는 불필요한 부분입니다.이번에는 파이썬 코드가 실행중일 때, 디버깅 중인지 확인하는 방법을 알아 보도록 하겠습니다.sys.gettrace()from sys import gettracedef is_debugging(): return (gettrace() != None)DEBUGPY_RUNNING 환경변수from os import getenvdef is_debugging(): return bool(getenv('DEBUGPY_RUNNING'))pdb ..

[Python] 품질 설정과 함께 이미지를 JPEG로 저장 방법들

개요Python에서 이미지를 품질 (Quality)을 지정하여 JPEG 형식으로 저장하는 여러 가지 방법을 정리해 둡니다.PIL(Python Imaging Library)/Pillowfrom PIL import Image# 이미지 열기img = Image.open('input.png')# JPEG로 저장img.save('output.jpg', format = 'JPEG')# 품질 설정하여 저장 (1-95)img.save('output_quality.jpg', 'JPEG', quality=85)# RGB로 변환 후 저장 (알파 채널이 있는 경우)img_rgb = img.convert('RGB')img_rgb.convert('RGB').save('output_rgb.jpg', 'JPEG')가장 널리 사용되는..

[jetson] Namespace GstRtspServer not available 오류 해결 방법

문제점 및 증상 DeepStream SDK 파이썬 예제중에서 "rtsp"로 출력하는 예제를 실행했더니, 다음과 같이 "ValueError: Namespace GstRtspServer not available" 오류가 발생하였습니다. nvidia@nvidia-OrinNX16G:/opt/nvidia/deepstream/deepstream/sources/deepstream_python_apps/apps/deepstream-test1-rtsp-out$ python deepstream_test1_rtsp_out.py Traceback (most recent call last): File "deepstream_test1_rtsp_out.py", line 26, in gi.require_version('GstRtsp..

[python] Could not find a version that satisfies the requirement torch==1.11.0+cu113

문제점 및 증상"PyTorch v1.11.0+cu113"를 설치하는 과정에서 다음과 같은 오류를 만났습니다.$ pip install torch==1.11.0+cu113ERROR: Could not find a version that satisfies the requirement torch==1.11.0+cu113 (from versions: 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.1.2, 2.2.0, 2.2.1, 2.2.2, 2.3.0)ERROR: No matching distribution found for torch==1.11.0+cu113시험 환경HW: Intel i5 / 16GB RAMGPU: NVIDIA RTX..

[Python] JSON 문자열 다루기

개요 JSON 문자열을 dict로 변환하거나, 반대로 dict를 JSON 문자열로 변한하여 처리하는 방법을 알아보겠습니다. dict를 JSON 문자열로 변환하기 간단하게 json.dumps() 함수를 이용하면 됩니다. from json import dumps json_str = dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) print(json_str) """ Result>>> ["foo", {"bar": ["baz", null, 1.0, 2]}] """ 주의할 점은 한글과 같이 UTF 문자열 데이터가 포함되어 있는 dict를 dumps() 함수로 문자열로 변환을 시도하면 다음과 같이 인코딩되어 변환되기 때문에 바로 읽을 수가 없게 됩니다. from json impor..

[Python] 라즈베리파이 GPIO 제어하기 - 기초

개요 라즈베리파이에서 GPIO를 제어하는 방법을 알아보겠습니다. 패키지 설치 라즈베리파이에서 GPIO를 제어하기 위해서는 "RPi.GPIO" 패키지가 필요합니다. 다음과 같이 "RPi.GPIO" 패키지를 설치할 수 있습니다. $ pip install RPi.GPIO GPIO 제어 간단 출력 예제 다음은 GPIO를 이용한 간단한 출력 예제입니다. import time import RPi.GPIO as GPIO LED = 3 # LED 제어용 GPIO 핀 DELAY = 0.3 # GPIO를 BCM 칩 기준으로 GPIO.setmode(GPIO.BCM) # LED 를 위한 핀을 출력으로 설정 GPIO.setup(LED, GPIO.OUT) try: while True: # LED 켜기 GPIO.output(LED..

[Python] 파일 복사(copy)

개요 파일을 복사(Copy)하는 방법에 대하여 정리해 둡니다. 파일을 복사하기 위해서 shutil 패키지의 copy(), copyfile(), copy2() 함수들을 이용합니다. shutil.copy(src, dst) 기본적으로 "src" 원본 파일을 "dst" 대상 파일로 복사합니다. "dst" 대상 파일의 생성 시각은 현재 시각으로 설정됩니다. "dst"에 폴더명을 입력한 경우, 해당 폴더로 파일을 복사합니다. Linux 계열에서는 파일의 권한 모드(chmod 참조)를 복사하지만, 파일의 생성과 수정 시간과 같은 다른 메타 데이터는 복사되지 않습니다. 메타데이터까지 복사하려는 경우에는 shutil.copy2() 함수를 이용해야 합니다. shutil.copyfile(src, dst) 기본적으로 "src..

[Python] Windows 10에 OpenVino 개발환경 만들기

OpenVINO™ Runtime 설치 OpenVino로 개발한 프로그램이 정상적으로 동작할 수 있도록 Runtime을 다운로드 받아서 설치합니다. https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/download.html 페이지에서 "Runtime"과 "Offline Installer"를 선택하여, "w_openvino_toolkit_p_2022.1.0.643_offline.exe" 파일을 다운로드 받아서 설치하였습니다. OpenVino 개발을 위한 가상환경 생성 파워쉘에서 다음과 같이 OpenVino 개발을 위한 "ov2022.1"이라는 가상환경을 설정하고, 활성화합니다. PS C:\Users\hanwh> cd D:/Dev..

pyvisa를 이용한 신호발생기 제어하기

개요 계측 장비를 다루는 라이브러리로 VISA를 활용하는데, 이를 python으로 포팅한 pyvisa에 대한 사용법을 간단하게 알아보고, pyvisa를 이용하여 신호발생기(Signal Generator)를 제어하는 방법을 정리해 둡니다. 기본적인 사용법 명령을 장치에 전송할 때는 write() 함수를 이용하고, 장치로부터 특정 값을 조회하여 가져올 때는 query() 함수를 이용합니다. pyvisa 설치 다음과 같이 pyvisa 패키지를 임포트하여 VISA 관련 함수를 이용할 수 있습니다. pip install pyvisa pyvisa-py pyvisa 패키지만 설치하고, import 하면 다음과 같은 오류가 발생합니다. >>> import pyvisa as visa >>> rm = visa.Resour..

[Python] 디스크 용량 확인하기

디스크의 용량을 확인하기 위해서 Pytyon 3에서 지원하는 shutil 패키지의 disk_usage() 함수를 이용하면 됩니다. 아래 소스는 현재 작업 폴더가 속한 디스크에 대한 용량을 확인하는 예제입니다. import shutil my_path = '.' # 디스크의 용량 확인 total, used, free = shutil.disk_usage(my_path) # 디스크 용량에 대한 이름 확인 total_label, used_label, free_label = shutil.disk_usage(my_path)._fields print(f'{total_label} = {total:,} byte / {used_label} = {used:,} byte / {free_label} = {free:,} byte'..

728x90