728x90

1) 파이썬 object에 대한 설명

 

먼저 파이썬 언어 자체가 '객체 지향 프로그래밍' 기반으로 만들어진 언어이다.

 

따라서 단순한 문자 및 숫자 변수 보두 객체로 만들어진다.

 

예를들어 'a'같은 경우 'str' class로 구성되어 만들어지는 객체이며,

'str' class가 가지는 attribute(상태) 나 method(행동, 함수)를 모두 활용할 수 있다.

 

마찬가지로 1과 같은 숫자 변수도 'int' class로 구성되고 이에 해당되는

attribute 나 method를 활용할 수 있다.

 

2) 파이썬 네임스페이스에 대한 설명

 

즉, 파이썬에서 우리가 선언하는 변수들은 모두 객체(object)이다.

따라서 하나의 변수를 선언할 때마다 그 변수명과 매칭되는 object가 존재한다.

 

이러한 namespace에서 각 obejct에 대한 매핑은 dictionary 형태의 자료형으로 구현된다.

 

파이썬에서의 namespace는 3가지로 분류된다.

  • 전역 네임스페이스: 모듈별로 존재하며, 모듈 전체에서 통용될 수 있는 이름들이 소속된다.
  • 지역 네임스페이스: 함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.
  • 빌트인 네임스페이스: 기본 내장 함수 및 기본 예외들의 이름들이 소속된다. 파이썬으로 작성된 모든 코드 범위가 포함된다.

 

저장된 형태의 예 하나 보면 아래와 같다.

{'a': 10, 'outer_func': <function outer_func at 0x7f90c3ac5f28>, '__package__': None, '__file__': 'namespace_example01.py', '__spec__': None, '__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f90c3a8ec18>, '__doc__': None, '__cached__': None}

 

 

3. argparse

 

일단 argparse는 python code를 실행할 때 , command line에서 쉽게 인자(argument)를 받아서 실행할 수 있게 만들어 놓은 라이브러리이다. 기본 구성은 다음과 같다.

 

##main.py 

import argparse

#파서 만들기
parser = argparse.ArgumentParser(description='Argparse example')

#인자 추가하기
parser.add_argument('--learning_rate', '-lr', type=float, default=0.001, help='learning rate')
parser.add_argument('--mode', type=str, defualt='train', choices=['train', 'test'])
parser.add_argument('--no_gpu', action='store_true')
parser.add_argument('--epochs', type=int, required=True, help='number of epochs')

#내가 쓴 인자 저장
args = parser.parse_args()

#인자 사용
lr = args.lr

https://jayeon8282.tistory.com/6

 

Argparse, python 기반의 명령형 인터페이스 라이브러리

argparse란 프로그램에 필요한 인자를 사용자 친화적인 명령행 인터페이스로 쉽게 작성하도록 돕는 라이브러리 이다. 즉, command 창에서 프로그램 내의 인자를 조절하게끔 도와준다. 참고로 argparse

jayeon8282.tistory.com

 

 

4. vars()를 통한 args dictionary형태로 변환

 

이렇게 저장한 인자를 'vars()'를 이용해 dictionary형태로 변환하여 사용이 가능하다.

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> args = parser.parse_args(['--foo', 'BAR'])
>>> vars(args)
{'foo': 'BAR'}

 

 

 

 

728x90
728x90

 

파이썬을 사용할 때, 특정 폴더 내의 파일 리스트를 가져와야 할 때가 있다.

 

나같은 경우는 pytorch dataloader를 구성할 때 주로 사용한다.

 

 

'/mnt/ssd0/CHC/Project/ICT_Admin/DeepLabV3Plus-Pytorch/datasets/data/traffic/test_data_20210127/다발_서울경인_test_data/다발지역_서울'

 

위와 같은 경로 아래의 하위 폴더 내의 jpg파일을 리스트로 가지고 오고 싶다고 해보자

 

하위폴더 리스트의 경우 다음과 같은 명령어로 가져올 수 있다.

 

glob("./*/")

 

결과는 아래와 같다.

 

'./1898/', './6838/', './255/', './8218/', './5145/', './5232/', './6835/', './4150/', './5130/', './6705/', './4116/', './6817/', './5194/', './1906/', './6843/', './4106/', './5020/', './1846/', './341/', './1884/', './9451/', './235/', './6746/', './4064/', './237/', './301/', './1865/', './4146/', './8112/', './8100/', './8111/', './9474/', './8223/', './9464/', './6724/', './5165/', './4137/', './4113/', './5120/', './6800/', './6861/', './357/', './8201/', './6856/', './6762/', './1808/', './8174/', './5199/', './5128/', './8136/', './6798/', './8197/', './9297/', './1832/', './3994/', './9388/', './4013/', './4052/', './5004/', './1829/', './8202/', './4151/', './328/', './6747/', './8115/', './5124/', './9419/', './38/', './2840/', './9381/', './5144/', './8211/', './9431/', './5138/', './4092/', './9391/', './6742/', './8187/', './1844/', './6848/', './6748/', './4134/', './6808/', './5149/', './4085/', './2825/', './36/', './1892/', './9450/', './337/', './5224/', './6819/', './5147/', './302/', './9397/', './321/', './9400/', './5231/', './9374/', './6822/', './5262/', './1886/', './5160/', './4109/', './50/', './1819/', './9437/', './4036/', './6812/', './4129/', './9457/', './8145/', './6613/', './9402/', './6778/', './9445/', './267/', './6851/', './5143/', './5121/', './5220/', './58/', './5169/', './2822/', './6714/', './4007/', './6847/', './4059/', './6745/', './6731/', './9384/', './5247/', './8173/', './4600/', './6792/', './1847/', './6829/', './6719/', './6730/', './6751/', './5198/', './4111/', './8159/', './1895/', './8188/', './9442/', './1890/', './353/', './9385/', './4067/', './295/', './7990/', './4114/', './1894/', './8210/', './5015/', './1863/', './9293/', './5218/', './8206/']

 

그러면 이 하위폴더 아래의 jpg 파일을 가지고 오고 싶으면 어떻게 하면 될까?

 

다음과 같이 하면 된다.

 

glob("./*/*.jpg")

 

결과는 다음과 같다.

 

'./1863/gsv_1.jpg', './1863/gsv_2.jpg', './9293/gsv_3.jpg', './9293/gsv_0.jpg', './9293/gsv_1.jpg', './9293/gsv_2.jpg', './5218/gsv_3.jpg', './5218/gsv_0.jpg', './5218/gsv_1.jpg', './5218/gsv_2.jpg', './8206/gsv_3.jpg', './8206/gsv_0.jpg', './8206/gsv_1.jpg', './8206/gsv_2.jpg']

 

그러면 만약에 각 하위폴더내에 또다른 하위 폴더가 있고, 그 아래에 있는 image파일까지 가지고 오고 싶을때는 어떻게 하면 될까?

 

다음과 같은 명령어를 사용하면 된다.

 

glob("./**/*.jpg", recursive=True)

 

여기서 '**'은 recursive의 의미로서 glob("./*/*.jpg") 명령어를 하위폴더에서 계속해서 반복해서 시행한다고 생각하면 된다. (recursive=True를 넣어야 함)

 

관련하여 설명이 있는 사이트는 아래와 같다.

 

 

https://resumetmachine.tistory.com/entry/%ED%8F%B4%EB%8D%94%EC%99%80-%ED%95%98%EC%9C%84%ED%8F%B4%EB%8D%94-%ED%8C%8C%EC%9D%BC-%EB%AA%A9%EB%A1%9D-%EB%A7%8C%EB%93%A4%EA%B8%B0-globglob

 

[Python] 파이썬으로 폴더와 하위폴더 파일 목록 만들기 glob.glob()

파일을 다루는 파이썬 프로그램 코딩시, 특정 폴더와 그 하위 폴더에 있는 파일 목록이 필요할 때가 있습니다. glob 모듈의 glob 함수는 제시된 조건에 맞추어 파일명을 구하여 리스트 형식으로 만

resumetmachine.tistory.com

 

https://velog.io/@k7120792/Glob-%ED%8C%A8%ED%84%B4%EA%B3%BC-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D

 

Glob 패턴이 뭘까?

서론 타입스크립트의 tsconfig, tslint 설정과 웹팩 설정을 직접 해보면서 이게 도대체 뭘 나타내는 코드일까..?라고 생각하게 만드는 것들이 있었습니다. 그 중에 하나가 바로 글롭 패턴(Glob Pattern)

velog.io

 

728x90
728x90

map의 경우 파이썬 list에 있는 요소를 지정된 함수로 처리해주는 함수이다.

 

예를 들면 다음과 같이 실수로 이루어져 있는 list를 map함수를 이용하여 간편하게 정수로 변환할 수 있다.

 

a = [1.2 , 2.5 ,3.7, 4.6]
a = list(map(int, a))
a
[1,2,3,4]

https://dojang.io/mod/page/view.php?id=2286 

 

파이썬 코딩 도장: 22.6 리스트에 map 사용하기

이번에는 리스트에 map을 사용해보겠습니다. map은 리스트의 요소를 지정된 함수로 처리해주는 함수입니다(map은 원본 리스트를 변경하지 않고 새 리스트를 생성합니다). list(map(함수, 리스트)) tupl

dojang.io

 

728x90
728x90

객체가 클래스의 하위 인스턴스 인지 여부를 확인하는 Method.

 

ex)

 

isinstance(1, int)  -> True 반환 ( 1은 int 클래스의 인스턴스이므로)

 

isinstance(1.4 , string) -> False 반환 (1.4는 string 클래스의 인스턴스가 아니므로)

 

마찬가지로 

 

test=Test()

 

isinstance(test, Test) -> True

 

https://sonseungha.tistory.com/509

 

[python] isinstance

isinstance() 의 설명은 아래와 같습니다. Return whether an object is an instance of a class or of a subclass thereof. A tuple, as in isinstance(x, (A, B, ...)), may be given as the target to check ag..

sonseungha.tistory.com

 

 

728x90
728x90

www.devkuma.com/books/pages/360

 

프로그램 개발 지식 공유, devkuma

데브쿠마는 프로그래밍 개발에 대한 지식을 공유합니다.

www.devkuma.com

 

728x90

'Python' 카테고리의 다른 글

파이썬 map의 활용  (0) 2021.08.22
isinstance()  (0) 2021.05.24
쉘스크립트 파일 sh 이용, 파이썬 파일 순차 실행  (0) 2021.05.07
Matplotlib scatter colormaps  (0) 2021.05.07
클래스 상속 및 super 함수의 역할  (0) 2021.05.04
728x90
  • 확장자 sh : shell script 파일, shell이 실행할 수 이쓴 명령을 기록해둔 파일
  • 두개 이상의 파이썬 파일을 순차적으로 실행하고 싶을 때 sh 파일에 파이썬 파일 시행 명령을 기록해 두고 사용합니다.



출처: https://nomalcy.tistory.com/52?category=937862 [NOMALCY]

 

1. test1.py, test2.py 두개 파일이 있다고 가정.

2. test.sh 파일 생성

 

# test.sh 파일 내용
python test1.py
python test2.py

 

 

3. 터미널에서 sh test.sh 파일 시행



출처: https://nomalcy.tistory.com/52?category=937862 [NOMALCY]

728x90

'Python' 카테고리의 다른 글

isinstance()  (0) 2021.05.24
Shell Script , parameter 전달 법  (0) 2021.05.07
Matplotlib scatter colormaps  (0) 2021.05.07
클래스 상속 및 super 함수의 역할  (0) 2021.05.04
Python 폴더생성/ 하위폴더까지 한꺼번에 생성  (0) 2021.05.03
728x90

matplotlib.org/stable/tutorials/colors/colormaps.html

 

Choosing Colormaps in Matplotlib — Matplotlib 3.4.1 documentation

Note Click here to download the full example code Choosing Colormaps in Matplotlib Matplotlib has a number of built-in colormaps accessible via matplotlib.cm.get_cmap. There are also external libraries like [palettable] and [colorcet] that have many extra

matplotlib.org

 

728x90
728x90

velog.io/@gwkoo/%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%83%81%EC%86%8D-%EB%B0%8F-super-%ED%95%A8%EC%88%98%EC%9D%98-%EC%97%AD%ED%95%A0

 

클래스 상속 및 super 함수의 역할

파이썬 클래스 상속 및 super 함수의 역할에 대해 정리해 보았습니다.

velog.io

super.__init__()

를 통해서 부모클래스의 __init__()에서 선언된 method 변수들을 자식 클래스에서 사용가능하다.

 

이를 하지 않으면 자식클래스에서는 부모클래스에서 선언된 method 변수들을 사용하지 못한다.

728x90

+ Recent posts