본문 바로가기

Python

Python의 fileinput module로 파일 수정하는 방법 fileinput 모듈이라고 해서 크게 다른 건 없는 것 같다. 그냥 Python에서 파일 입출력할 때 쓰는 모듈인데 흔히 쓰는 open( ) 함수 말고 fileinput.input( ) 함수를 쓰는 거라 생각하면 된다. 그럼 왜 fileinput 이란 모듈을 따로 만들었으며 언제 사용하는 걸까?? 이렇게 저렇게 쓰다보니 fileinput을 사용하면 보다 간단하게 파일 수정을 할 수 있기 때문이란 생각을 하게 됐다. 아래와 같이 test_text.txt 파일이 있다고 가정하자. name : tube name : ryan name : apeach 그리고 형태는 유지시키면서 두 번째 줄의 "ryan"을 "라이언"으로 바꿔보도록 하자. open( )을 사용하면 불가능한 건 아니지만 fileinput.input.. 더보기
imgaug 라이브러리 사용 방법 classification이나 segmentation 작업을 위해 image augmentation을 하는 것은 그리 어려운 일이 아니다. 근데 object detection 영역으로 넘어오면 얘기가 달라진다. train image에 대해 augmentation을 진행할 때 ground truth도 같이 진행해줘야 하는데 이 과정이 까다롭기 때문이다. 예전에 잠깐 공부할 때는 flip, rotate, shift 등을 하나하나 직접 짜서 augmentation을 진행했었는데.. 우연히 회사 옆자리 연구원으로부터 imgaug 라이브러리를 알게되어 사용 방법을 정리하고자 한다. imgaug ? Image Augmentation을 위한 라이브러리다. 이곳에서 지원 augmentation 방법들을 확인할 수 있다.. 더보기
Python으로 지정 경로에 폴더 존재하는지 확인하고 없으면 폴더 생성하는 방법 간혹가다가 경로 설정을 해주면 해당 경로에 폴더가 존재하지 않는다는 에러를 만나게 된다. 이런 에러를 잡아주기 위한 코드라 할 수 있겠다. 핵심은 os.makedirs( ) 함수이데, 지정한 경로의 상위 경로마저 없는 경우 그것까지 만들어준다. import os def makedirs(path): try: os.makedirs(path) except OSError: if not os.path.isdir(path): raise​ 더보기
Anaconda, Python, CMD, 명령어 정리 1. 가상환경 생성 >>> conda create --name 원하는이름 python=원하는버전 (ex) conda create --name gpu1.12.0 python=3.6.5 2. 가상환경 리스트 확인 >>> conda info --envs 3. 가상환경 활성화 >>> conda activate 가상환경이름 (ex) conda activate gpu1.12.0 4. 모듈 다운로드 >>> conda install 모듈이름 (ex) conda install tensorflow-gpu=1.12.0 5. Dependencies 없이 원하는 모듈만 다운로드 >>> conda install --no-deps 모듈이름 or pip install --no-deps 모듈이름 (ex) conda install --.. 더보기
Python file 우클릭 시 context menu에 Anaconda 가상환경 idle 뜨게 하는 방법 파이썬을 설치하면 기본적으로 파이썬 파일 우클릭 시 context menu에 [ Edit with IDLE ] 이 생겨 바로 열어줄 수 있다. 근데 이게 아나콘다 가상환경을 사용하는 경우에는 안 뜨더라. 그래서 위 사진처럼 [ Edit with ENV -> Edit with GPU1.12.0 ] 을 통해 열어줄 수 있는 방법이 있나 하고 찾아봤다. 설정 방법은 다음과 같다. 실행 창에 regedit 입력 후 레지스트리 편집기를 띄운다. 컴퓨터\HKEY_CLASSES_ROOT\Python.File 을 찾는다. 기존에 있는 editwithidle / editwithidle\shell / editwithidle\shell\edit36 / editwithidle\shell\edit36\command 와 똑같이 .. 더보기
Python으로 시스템 변수 추가하는 방법 Code 1 2 import sys sys.path.append('C:/Users/Ballentain/Desktop/test') cs 설명 시스템 변수에 경로를 추가하면 무엇이 좋냐고 물어본다면, 파일을 import할 때 경로 신경 안 쓰고 바로 import해줄 수 있어서 좋다고 답할 수 있을 것 같다. 말로는 이해가 힘들다. 예제를 통해 살펴보자. test 폴더에는 train.py 와 obj 폴더가 들어있고, obj 폴더에는 trainer.py가 들어있다. [ train.py ]는 obj의 trainer.py를 import하게끔만 설정해 놨고, [ trainer.py ]는 실행 Hi 를 출력하도록 설정해놨다. 위와 같은 구조 아래에서 train.py를 실행하면 trainer.py가 import 되어 에.. 더보기
이미지 읽는 방법 / cv.imdecode( ), io.BytesIO( ) 이미지를 읽는 방법에는 여러가지가 있다. OpenCV를 사용해서 읽는 방법도 있고, PIL를 이용해서 읽는 방법도 있다. 그리고 최근에는 이미지 파일을 Binary 형태로 읽은 다음 ( = byte 단위로 읽는다는 의미 ) jpg로 decoding하는 방법도 있다는 걸 알게 됐다. 하나씩 그 사용법에 대해 정리해보도록 하자. 1. cv2.imread( ) import cv2 path = './test_image.jpg' img = cv2.imread(path) 내가 주로 사용하는 함수다. 2. PIL.Image.open( ) from PIL import Image path = './test_image.jpg' img = Image.open(path)​ 가끔 코드 검색을 하다 보면 접하게 되는 함수다. 직.. 더보기
Python으로 XML 파일 만들기 1. 간단한 설명 공부하던 중에 XML 파일을 만들어야하는 일이 생겨 알아보았다. 정의나 개념 같은 건 넘어가고 어떻게 구현하는 지만 정리해보고자 한다. Python에서는 XML을 표준 라이브러리로 지원하기 때문에 별도의 다운없이 바로 import해서 사용해주면 된다고 한다. 주로 사용하는 함수와 사용법은 아래와 같다. Element( ) 함수로 root tag를 잡고, 거기에 SubElement( )로 하위 tag를 추가하는 방식으로 작성하면 된다. ( XML을 잘 몰라서 tag라는 용어로 쓰는 건지도 잘 모르겠다..) SubElement( ) 함수는 반환값으로 객체를 반환하기는 하는데 굳이 변수를 만들어서 받아주지 않아도 된다. 하위 tag에 하위 tag를 또 추가하고 싶은 경우에만 반환값을 받아오면.. 더보기