Python study
-
python_shutil : 고수준 파일 연산Python study/문법공부 2022. 10. 7. 10:44
shutil 모듈은 파일과 파일 모음에 대한 여러 가지 고수준 연산을 제공합니다. 특히, 파일 복사와 삭제를 지원하는 함수가 제공됩니다 디렉터리와 파일 연산 shutil.copyfileobj(fsrc, fdst[, length]) 파일류 객체 fsrc의 내용을 파일류 객체 fdst에 복사합니다. 주어지면, 정수 length는 버퍼 크기입니다. 특히, 음의 length 값은 *1)청크 단위로 소스 데이터를 반복하지 않고 데이터를 복사하는 것을 의미합니다; 기본적으로 제어되지 않은 메모리 소비를 피하고자 데이터를 청크로 읽습니다. fsrc 객체의 현재 파일 위치가 0이 아니면, 현재 파일 위치에서 파일 끝까지의 내용만 복사됨에 유의하십시오 파이썬을 활용해서 파일을 복사할 때 shutil 라이브러리의 copy..
-
Python_ subprocess_외부 프로세스 실행 및 입출력 제어Python study/문법공부 2022. 9. 27. 13:59
1. subprocess subprocess의 주요한 목적은, 현재 소스코드 안에서 다른 프로세스를 실행하여 그 과정에서 데이터의 입출력을 제어하기 위함이다. 즉, 새로운 프로세스를 실행하고, 프로세사의 입출력 및 에러 결과에 대한 리턴코드를 개발자가 직접 제어하게 해주는 모듈이다. 2. subprocess method 2.1) subprocess.run subprocess.run (args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, un..
-
python_*args,**kwargsPython study/문법공부 2022. 9. 27. 10:24
1. *args args 는 argument 의 약어이다. - 파라미터를 몇개 받을지 모를는 경우 사용하며 튜플 형태로 전달된다. args는 개발자가 명명을 변경할 수 있다. def print_param(*args): print(args) for p in args: print(p) print_param('a', 'b', 'c', 'd') 2.**kwargs kwargs 는 keyword argument 의 약어이다. 마찬가지로 파라미터를 몇개 받을지 모르는 상황에 사용하며, 파라미터 명을 지정 할 때 사용한다. Dictionary 형태로 전달된다. def print_param2(**kargs): print(kargs) print(kargs.keys()) print(kargs.values()) for na..
-
복잡도Python study/알고리즘 2022. 9. 15. 18:15
서론 최적의 알고리즘을 구현하기 위해서는 시간 복잡도와 공간 복잡도를 고려해야 한다. 그렇다면 시간 복잡도는 무엇이고 공간 복잡도는 무엇일까? 시간과 공간은 이해 할 수 있는 단어인데, 복잡도는 무슨 말이지? 필자는 시간 복잡도와 공간 복잡도 라는 개념을 처음 접했을 때 위 와 같은 생각이 들었다. 우리는 알고리즘 카테고리에 속한 글을 읽고 있다. 즉, 이 글은 알고리즘과 관련이 있다. 복잡도*Complexity는 알고리즘의 성능을 나타내는 척도이다. 복잡도는 시간 복잡도*Time Complexity와 공간 복잡도*Space Complexity로 나눌 수 있다. 복잡도 영문으로는 Complexity 어감에서 오는 느낌으로 어느 정도 의미를 유추할 수 있을 것이다. 복잡하다는 의미를 수치화 한 것이고 Ne..
-
Opencv- 영상다루기Python study/opencv 2022. 3. 24. 15:37
목표 동영상을 읽고, 보여주고, 저장하기 cv2.VideoCapture(), cv2.VideoWriter() 함수에 대해서 알아보기 Camera로 부터 영상 재생 Camera로 부터 영상을 읽어 화면에 보여주기 다음과 같은 프로세스의 순서를 가진다. 1. VideoCapture Object생성, 변수로는 Camera Device Index 나 동영상 파일명을 넘겨준다. 일반적으로 0이면 연결. 2. Loop 돌면서 Frame을 읽는다. 3. 읽은 Frame에 대해서 변환작업을 수행한 후, 화면에 보여준다. 4. 영상 재생이 끝나면, VideoCapture Object를 release, window 닫기 Sample code : https://github.com/CBike/opencv/blob/master..
-
opencv_도형 그리기Python study/opencv 2022. 3. 15. 16:24
목표 다양한 모향의 도형을 그릴 수 있다. cv2.line(), cv2.crircle(), cv2.rectangle, cv2.putText() 도형 그리기는 동영상이나 이미지에서 Match 가 되는 영역을 찾은 후에 사용자가 인식하기 쉽게 표시하는 목적으로 사용됩니다. 1.Line 그리기 cv2.line() 은Start와 End 점을 연결하여 직선을 그립니다. cv2.line() 함수 설명 cv2.line(img, start, end, color, thickness) - Parameters img - 그림을 그릴 이미지 파일 start - 시작 좌표 end - 종료 좌표 color - BGR 형태의 color thickness(int) - 선의 두깨.pixel Sample Code : https://gi..
-
리팩토링 - 캡슐화Python study/코딩스타일 2021. 12. 3. 16:48
캡슐화 1. 레코드 캡슐화 하기 곳곳에 쓰이는 가변 데이터는 레코드가 아니라 객체로 저장하자 데이터 구조를 명확히 표현할 수 있고, 코드 한 곳에서 관리하고 표현할 수 있게 된다. before after 2. 임시 변수를 질의 함수로 바꾸기 곳곳에 쓰이는 임시변수를 메써드로 만들어, 굳이 임시 변수를 더 만들지 말자 Before After 3. 클래스 추출하기 개발 과정에서 점점 비대해지는 클래스를 적절히 분리한다. 단일 책임 원칙 (SRP)를 잊지말자. before after 추가 설명과 팁 일부 데이터와 메써드를 따로 묶을 수 있다면 어서 분리하라는 신호다. 함께 변경되는 일이 많거나, 의존하는 데이터들도 분리한다. 개발 중, 일부 기능만을 사용하기 위해 서브 클래스를 만들어야 한다면 클래스를 나눠야..
-
리팩토링Python study/코딩스타일 2021. 12. 3. 14:47
기본적인 리팩토링 1. 함수 추출하기 목적과 구현을 분리한다. 코드를 보았을때 "어떻게" 보다 "무엇"을 하는지 한 번에 알수 있도록 함수의 이름을 짓자 하나의 함수는 한가지 목적을 가지고 한가지 일만을 해야한다. 즉 한가지 일만 할수 있도록 함수를 쪼개고 추출하자 Before after 추가 설명과 팁 단 한 줄짜리 함수라도 상관없다. 무엇을 하는지 명확하게 드러나야 한다. 함수의 길이는 한 눈에 들어와야 한다. 두 번 이상 사용될 코드는 함수로 만들자 함수 이름을 당장 짓기가 어려우면, 주석으로 먼저 무슨 일을 하는지 적어두자. 반면, 코드 자체로 무엇을 하는지 명확히 보인다면, 굳이 추출하지 않는다. 2. 변수 추출하기 복잡한 표현식은 과정을 나누어 표현한다. 각 과정을 잘 드러내는 임시 변수를 사..