Intro

os 모듈은 파이썬에서 파일과 디렉토리, 경로를 다루는 모듈이다.
즉, 필수적으로 사용법을 익혀야 하는 모듈!




메서드

메서드 설명 예시
os.getcwd() 현재 경로를 반환한다. os.getcwd()
os.mkdir() 디렉토리를 만든다. 현재 디렉토리에 만들기 : os.mkdir(‘만들 디렉토리명’)
특정 경로에 만들기 : os.mkdir(‘경로 및 만들 디렉토리명’)
os.makedirs() 경로상의 모든 디렉토리 만들기 os.makedirs(‘디렉1/디렉2/디렉3’)
경로상 없는 폴더들은 모두 만든다.
모든 폴더가 존재할 경우 오류 발생
os.listdir() 디렉토리 안의 파일 및 디렉토리를 리스트 형태로 반환 os.listdir(‘경로’)
os.chdir() 디렉토리 변경. 현재 위치를 변경한다. os.chdir(‘경로’)
os.path.dirname() 파일명을 제외한 경로만 가져온다. os.path.dirname(‘/content/image/100.jpg’)
반환값 : /content/image
os.path.basename() 경로를 제외한 파일명만 가져온다. os.path.dirname(‘/content/image/100.jpg’)
반환값 : 100.jpg
os.isfile() 파일인지를 확인한다. boolean으로 반환 os.isfile(‘content/100.jpg’) –> True
os.isfile(‘content/image’) –> False
os.isdir() 디렉토리인지를 확인한다. boolean으로 반환 os.isdir(‘content/100.jpg’) –> False
os.isdir(‘content/image’) –> True
os.path.split() 경로에서 디렉토리명과 파일명을 분리해 반환한다. dir, file = os.path.split(‘content/image/100.jpg’)
dir : content/image
file : 100.jpg
os.path.exists() 디렉토리 혹은 파일의 존재 유무를 반환한다. boolean으로 반환 os.path.exists(‘content/image/100.jpg’)
존재할 경우 True, 아닐 경우 False
os.path.getsize() 파일의 크기를 반환한다. 단위는 byte. os.path.getsize(‘content/image/100.jpg’)
반환 : 409600
os.path.join() 디렉토리와 또는 파일 경로를 합친다. os.path.join(‘content/image’, ‘100.jpg’)
반환 : content/image/100.jpg
os.path.splitext() 파일명(경로명)과 확장자를 분리해 반환한다. name, ext = os.path.splitext(‘100.jpg’)
name : 100, ext : .jpg
name, ext = os.path.splitext(‘content/image/100.jpg’)
name : content/image/100, ext : .jpg
os.rename() 파일명을 변경한다. 확장자까지 기재해줘야 한다. os.rename(‘content/image/100.jpg’, ‘content/iamge/200.jpg’)
200.jpg로 파일명이 바뀜
os.remove() 파일을 삭제한다. os.remove(‘content/image/100.jpg’)
100.jpg 파일이 삭제된다.
os.removedir() 디렉토리를 삭제한다. 빈 폴더만 삭제 가능하며,
안에 파일이 있는 경우 삭제 불가.
os.remove(‘content/image’)
image 디렉토리가 삭제된다.
  안에 파일이 있는 디렉토리를 삭제하려면 shutil 모듈을 사용한다. shutil.rmtree(‘디렉토리경로’)




절대 경로와 상대 경로

절대 경로란, root 디렉토리로를 시작점으로 하는 경로를 뜻한다.
현재 위치가 어디든, 동일한 결과값을 가져오게 된다.

상대 경로란, 현재 경로를 시작점으로 하는 경로를 뜻한다.
현재 위치가 어딘지에 따라 결과값이 다르게 된다.

엑셀을 다뤄본 사람이라면 행열고정($) 기호라고 하면 친근할 것이다.

개념을 더 익히기 위해 예시로 설명해본다.
예를 들어 아래와 같은 디렉토리 구조가 있다고 해보자.

1
2
3
4
5
6
7
8
9
10
11
12
|-1디렉토리
|    ㄴ11디렉토리
|    ㄴ12디렉토리
|    ㄴ13디렉토리
|         ㄴ131디렉토리
|         ㄴ132디렉토리
|
|-2디렉토리
|    ㄴ21디렉토리
|    ㄴ22디렉토리

현재 위치는 1디렉토리라고 가정해보자.
131디렉토리로 이동하는 방법은 아래와 같다.

1
2
3
4
5
6
# 절대 경로
cd /1디렉토리/13디렉토리/131디렉토리

# 상대 경로
cd 13디렉토리/131디렉토리

현재 위치는 131디렉토리라고 가정해보자.
21디렉토리로 이동하는 방법은 아래와 같다.

1
2
3
4
5
6
# 절대 경로
cd /2디렉토리/21디렉토리

# 상대 경로
cd ../../../2디렉토리/21디렉토리

절대경로와 상대경로는 무엇이 더 좋다, 혹은 편하다가 아니다.
상황에 맞춰 사용하는 것이 중요하다.

../ 은 한 단계 바깥 디렉토리를 의미한다.

/은 한 단계 안쪽 디렉토리를 의미한다.



Reference

https://docs.python.org/3/library/os.html
https://itholic.github.io/python-listdir-glob/
https://blockdmask.tistory.com/554
https://ddolcat.tistory.com/654
https://zephyrus1111.tistory.com/200