오늘 어떠한 툴을 만들면서 익숙하게 사용하지 않았던 Python으로 파일 시스템이나 OS를 다루는 모듈이 있어 정리해보고자 합니다.
glob
특정 확장자나, 파일 명 패턴이 담긴 파일들의 이름을 리스트화하는 라이브러리 입니다.
만약, 다음과 같은 파일이 있는 경우에 해당 이미지들의 패턴을 제시합니다. 공식문서↗
import glob
x = glob.glob('./data/stop*.jpg')
print(x)
# ['./data/stop7.jpg', './data/stop1.jpg', './data/stop4.jpg', './data/stop9.jpg', './data/stop8.jpg', './data/stop.jpg', './data/stop2.jpg', './data/stop10.jpg', './data/stop5.jpg', './data/stop6.jpg', './data/stop3.jpg']
Argparse
argparse는 터미널에서 인자에 대한 값을 지정할 때 사용합니다.
다음 예제를 보면 쉽게 확인할 수 있습니다. 다음과 같이 파이썬 파일을 생성합니다.
관련 내용은 아래 블로그나 공식 문서↗를 참고하세요.
# run.py
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-d", "--decimal", dest="decimal", action="store", help='입력 인자입니다.')
parser.add_argument("-f", "--fast", dest="fast", action="store_true", help='인자를 넣으면 True')
args = parser.parse_args()
print(args.decimal)
print(args.fast)
# 해당 예제는 https://wikidocs.net/73785#google_vignette 에서 가져왔습니다.
이후 터미널에서 다음 명령을 실행하면 `Hello` `True`가 실행되는 것을 확인할 수 있습니다.
python run.py -d Hello -f
- `-h` 혹은 `--help` 인자를 넣으면 `.add_argument`에서 help 파라미터의 내용을 확인할 수 있습니다.
- `.add_argument`에서 `default` 값을 지정하면 인자를 작성하지 않았을 때 None이 아닌 default가 입력됩니다.
os
파이썬의 os모듈 들은 운영체제와 상호 작용을 할 수 있는 기능들을 제공합니다.
`os.system("dir")` | 시스템 명령어 실행 (`dir` 명령어 실행) |
`os.environ['VAR'] = 'Hello' | 환경 변수를 딕셔너리 형태로 저장 `.get()`으로 불러올 수 있음. |
`os.listdir()` | 디렉토리 목록을 리스트 형태로 반환 |
`os.stat(filepath)` | 경로의 메타 정보를 반환합니다. |
`os.path.join()` | 새 경로 생성 |
pickle
pickle 모듈은 파이썬의 객체의 Serialization를 위한 바이트열 프로토콜을 구현합니다. 즉, 파이썬 객체를 바이트열 방식으로 디코딩하거나 반대로 복호화 하는 것을 말합니다. 공식문서↗
객체 저장하기 (`dump`)
import pickle
data = {
"01" : "파이썬 프로그래밍",
"02" : "데이터베이스"
}
file = open("data.pickle", "wb") # 파일 객체 write binary
pickle.dump(data,file) # data를 file에 저장 저장
file.close()
객체 읽기 (`load`)
import pickle
file = open("data.pickle","rb") # read binary
data = pickle.load(file) # 읽기
print(data)
file.close()
`file.close()`를 반드시 써서 닫아야한다는 단점이 있습니다. 이때, 예외가 발생하는 경우, `close()` 메서드가 호출되지 않을 수 있습니다. 이로 인한 자원 낭비를 막기 위해 `with` 구문을 사용하면 자동으로 호출할 수 있습니다. 보통 머신러닝 모델을 저장할 때 사용합니다.
with open('model.pkl', 'wb') as pickle_file:
pickle.dump(model, pickle_file
model = None
with open('model.pkl','**rb**') as pickle_file:
model = pickle.load(pickle_file)
- python 내장 함수 open() : 파일 읽고, 쓰기 - ctkim.tistory.com↗
- Python CSV 모듈 공식문서 (writer, reader)↗
- Python JSON 모듈 공식문서(loads, dumps)↗
sys
sys 모듈은 파이썬의 인터프리터를 제어하는 모듈입니다.즉, sys 자체가 파이썬 인터프리터라고 생각하시면 됩니다. 공식문서↗
import sys
print(sys.version_info) # 파이썬 인터프리터의 버전을 나타냅니다.
print(sys.path) # 파이썬의 환경변수(PYTHONPATH) 리스트를 출력합니다.
sys.path.insert(0, 'path/to/best') # 원하는 경로를 PYTHONPATH에 추가할 수 있습니다.
sys.argv # 터미널에서 파이썬 실행시 인자들을 리스트 형태로 보여줍니다.
# 여기서 실행시 인자들이란, python run.py plus 에서 'plus'를 의미합니다.
sys.exit() # 파이썬 코드를 중단하는 역할입니다. 이후에는 실행되지 않습니다.
☕️ 포스팅이 도움이 되었던 자료
오늘도 저의 포스트를 읽어주셔서 감사합니다.
설명이 부족하거나 이해하기 어렵거나 잘못된 부분이 있으면 부담없이 댓글로 남겨주시면 감사하겠습니다.
'Programming > Python' 카테고리의 다른 글
파이썬 가상환경 설치하기 (0) | 2024.05.11 |
---|---|
깊은 복사와 얕은 복사 (0) | 2024.04.08 |
Garbage Collector 동작 방식 (0) | 2024.02.07 |
파이썬에서 멀티 스레딩을 구현하지 못하는 이유 (0) | 2024.01.31 |
파이썬 패키지와 모듈 (0) | 2024.01.02 |