os.path와 Pathlib 차이

이지훈·2022년 1월 24일
1

부트캠프 배울때에는 os.path로 경로를 설정했었는데, 코드리뷰를 받는 중 Pathlib을 써보면 어떻겠냐는 말을 들었다. 그래서 알아보고자 한다.

Pathlib이란

파이썬 3.4부터 빌트인(built-in) 모듈에 포함된 pathlib으로, os.path는 이전 버전의 것이었다. 나는 파이썬 버전 3.8버전대를 쓰고 있었기 때문에 Pathlib이 더 알맞다고 생각했다.

차이점

os.path는 경로를 문자열로 다루지만, Pathlib은 경로를 객체로 다룬다.

# 기존
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

보통 이런 코드는 오른쪽에서 왼쪽으로 읽는다. (<-- 이 순서대로 보면 된다.)
위 Base_DIR은 기본 root dir을 지정하는 코드이다. 보통 manage.py가 있는 위치이다.
코드를 자세히 살펴보자면
__file__ : 현재 파일을 말한다.
os.path.abspath : 절대 경로를 획득하겠다는 말이다. 즉, 현재 파일의 절대경로를 획득한다.
즉, /User/test/생성한 프로젝트명/settings.py가 있는 디렉토리/settings.py 을 말한다.
os.path.dirname : settings.py이 들어있는 폴더이름을 찾겠다는 말이다. 즉, 나는 디렉토리를 3번 쌌기때문에 os.path.dirname이 3번 나오는것이다.

# python 3.4 이후
from pathlib import Path

# 기본세팅
BASE_DIR = Path(__file__).resolve().parent.parent

pathlib 모듈은 다른 운영 체제에 적합한 의미 체계를 가진 파일 시스템 경로를 나타내는 클래스를 제공한다. 코드가 실행되는 플랫폼의 구상 경로를 인스턴스화해준다.

위 코드를 보면,
__file__ : 현재 파일
Path : 구상 경로를 객체화 하는것. 즉, 현재 파일의 경로를 객체화해서 표현
resolve : os.path.abspath처럼 절대경로 반환을 한다.
parent : 부모 경로로 django 프로젝트가 생성된 위치를 표현할 때 사용하며, 나같은 경우에는 parent가 2번 쓰였으니 2번 옮겨간 위치에 django 프로젝트가 생성되었다.

profile
꾸준하게 🐌

0개의 댓글