문제 현상 Visual Studio Code를 통해 외부 원격 서버에 remote-ssh플러그인을 통해 접속하여 코드 접근을 하고 실행하는 환경에서 코드를 작성하고 디버그 모드로 실행 시키는데 코드내 기술된 파일/폴더 경로가 코드파일이 존재하는 경로 기준이 아니라 접속 시 루트 폴더 기준으로 경로명이 잡혀 오류가 발생함 사례 중에 하나로 다음과 같이 pytorch 코드를 실행하는 경우 데이터 폴더(data)가 없는 경우 데이터를 다운로드 받고 폴더가 생성되고 있는 경우 해당 데이터 폴더를 이용하는 식으로 코드 구성이 되어 있다. ... training_data = datasets.FashionMNIST( root="data", train=True, download=True, transform=ToTens..
구글 드라이브에 있는 파일들이 여러 개인 경우 한꺼번에 선택해서 다운로드를 선택하면 하나의 압축파일로 만들어져 다운로드되는 과정을 기다려야 하거나 너무 오래 걸려서 포기한 적이 있다. 파일 몇 개 정도는 클릭을 몇번하면 별도의 파일로 다운로드할 수 있으나 이게 수백개가 되니 먼가 대안을 찾기 시작했다. 프로그래밍으로 자동화 해결책으로 파이썬 라이브러리 gdown을 이용한 예제가 몇 개 보였고 이를 시도해 보았는데 여러가지 문제로 원하는 결과를 얻을 수 없었다. 시도 끝에 성공한 방법을 여기에 적어두고자 한다. 성공한 방법은 google cloud의 drive api를 이용하여 폴더의 id를 기준으로 위치한 파일들을 다운로드 하는 방법이다. 사용한 언어는 파이썬 기반이다. 구글 클라우드 drive api ..
Streamlit 소개 파이썬기반 프로젝트를 소개하는 간단한 웹어플리케이션을 만드는 라이브러이이다. 최근 많은 딥러닝, 머신러닝 기반의 프로젝트 데모를 간단하게 보여주기 위해 flask같은 웹 프레임워크를 사용하기도 하는데 사실 웹서버 클라이언트 개념을 알아야 하는 진입장벽이 있다. 좀 더 간단하고 데이터에 특화된 결과를 보여주기 쉽게 구성된 라이브러리가 바로 streamlit 이고 간단한 인터액션이나 pandas나 numpy같은 데이터를 다루는 라이브러리와 무리없이 연결하여 쓸 수 있어 정말 간단한 결과를 공유하는데에는 아주 좋은 라이브러리도 보여진다. 설치: pip를 이용해 완전 간단함 설치는 다음 한줄을 터미널 창에 입력하면 끝난다. 도커나 가상환경(conda 같은)에서 python3 버전을 설치하..
OpenCV에서 한글 파일이나 경로명이 들어간 경우 imread와 imwrite가 동작하지 않는 경우 우회 방법 https://jangjy.tistory.com/337 imread, imwrite 에서 한글(유니코드)로 인한 문제를 해결하자 python에서 opencv를 사용하면서 한글(유니코드)로 인한 문제가 발생 할 경우가 있다. python의 opencv에서는 유니코드를 처리하지 못하기 때문에 발생하는 문제라고 한다. 이러한 경우 아래와 같이 imen jangjy.tistory.com
PEP8 요약 indentation은 4칸 스페이스 사용(python3는 tab과 space 혼용금지) 한줄 79자이하로 작성(\로 구분) 클래스 이름 Camel Case로 (ex. BasicTemp) 메소드/변수 이름 소문자와 언더바(ex. get_audio) 클래스 변수 public 변수는 그대로 (ex. number) protected 변수는 앞에 언더바(ex. _number) private 변수는 앞에 언더바 두개(ex. __number) 그외에 다양한 스타일 가이드가 있다. 참고문헌 파이썬 코드 스타일 가이드 문서인 PEP 8이 있다. https://www.python.org/dev/peps/pep-0008/#function-annotations PEP 8 -- Style Guide for Py..
파이썬 함수 구현 중 특히 커맨드 라인 입력처럼 다양한 갯수의 옵션이 필요한 경우 *args나 **kwargs 구문을 많이 보았다. 습관적으로 그려려니 하고 넘어가다가 사용법을 한번 정리하는 것이 좋겠다는 생각이 들어 이곳에 간단히 정리한다. *args 이해하기 함수의 파라미터 영역에 *args가 들어 있는 경우 입력 데이터가 몇개일지 모르는 경우에 사용한다. 여기서 중요한 것은 args가 아니고 *인 것을 최근에 알았다. *는 함수의 인자로 들어로는 데이터가 몇개인지 모르겠으나 해당 변수명으로 모아서 처리하겠다는 뜻이다. 다음과 같이 *names 로 인자를 하나로 선언하고 들어오는 것을 tuple과 같이 처리하는 함수를 구현한다. def test_args(*names): for name in names..
다음 코드처럼 PyQt5로 테이블을 만드는 중에 데이블 안의 아이템안에 체크박스를 넣게 되었다. import sys from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QTableWidget,QTableWidgetItem,QVBoxLayout,QCheckBox from PyQt5 import Qt,QtCore class TableWidget(QWidget): def __init__(self): super().__init__() self.title = 'Checkbox in Table' self.left = 0 self.top = 0 self.width = 640 self.height = 480 self.numRow = 5 self.numCol..
파이썬 리스트 자료 구조에 데이터가 저장되어 있을 때 이들 중 일부를 선택하거나 정리하는데 첨자들을 넣어 간단히 골라낼 수 있다. [ start: stop] = [ 이상 : 미만 ] 먼저 인덱스 첨자 두개는 시작 인덱스와 정지 인덱스 두개로 표현된다. 문제는 이렇게만 하면 정확한 의미가 전달이 안된다. 첫번째 시작 인덱스는 해당 인덱스를 포함(이상)하고 정지 인덱스는 해당 인덱스를 포함하지 않는다(미만). 그래서 다음코드 처럼 [1:10]인 경우 인덱스 1이상부터 인덱스 10미만(9까지)까지를 골라내라는 뜻이 된다. sample = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q'] print(sample[1:10]) 결과는 다음과..
- Total
- Today
- Yesterday
- nodejs
- 우분투
- 3d프린터
- vvvv
- ssh
- 메이커
- 단축키
- CAD
- nvidia
- 한글
- tensorflow
- fablab
- git
- comfyUI
- ubuntu
- docker
- Linux
- Stable Diffusion
- vscode
- cura
- opencv
- MicroBit
- Maker
- conda
- Arduino
- WSL
- Fusion360
- Python
- Streamlit
- 파이썬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |