Python pathlib

LshDevLog·2026년 3월 21일

python

목록 보기
5/16
post-thumbnail
  • pathlib은 경로를 문자열이 아닌 객체로 다루는 모듈
  • Path 객체를 반환함
  • 파일 존재 확인, 디렉토리 생성, 파일 읽기/쓰기, 경로 조작과 같은 기능 있음
  • os모듈과 비교
    • pathlib은 Path라는 객체 기반으로 가독성과 유지보수성이 좋음
    • os는 문자열 기반이라 실수하기 쉬움

경로 생성

from pathlib import Path

home = Path.home()
test = Path('test.txt')

print(home)
print(test)
C:\Users\MSI
test.txt

Path.home(): 현재 사용자 홈 디렉토리 반환
Path('test.txt'): 현재 경로 기준 파일 경로 생성


경로 연결

from pathlib import Path
import os

p = Path('data') / 'sample.txt'
p_os = os.path.join('data', 'sample.txt')

print(p)
print(p_os)
data\sample.txt
data\sample.txt
  • / 연산자는 Path 객체에서 경로를 이어주는 연산자
  • Windows는 \, MacOS와 Linux는 /를 사용하는데 Path를 사용하면 OS에 맞게 자동으로 처리됨
  • os.path.join으로 연결하는 방식과 결과는 같음

파일 존재 확인

from pathlib import Path
import os

p = Path('sample.txt')
p_os = os.path.exists('sample.txt')


print(p.exists())
print(p_os)
False
False

exists()로 파일 존재 확인

from pathlib import Path
import os

p = Path('data') / 'sample.txt'
p_os = os.path.join('data', 'sample.txt')


print(p.is_file())
print(p.is_dir())
print(os.path.isfile(p_os))
print(os.path.isdir(p_os))

파일인지 디렉토리인지 확인


디렉토리 생성

from pathlib import Path
import os

Path("path_dir").mkdir()
os.mkdir('os_dir')

디렉토리 생성 기본

from pathlib import Path

Path("a/b/c").mkdir(parents=True)

하위 디렉토리까지 생성(중간 경로가 없어도 전부 생성)

from pathlib import Path

Path("new_dir").mkdir(exist_ok=True)

exist_ok=True: 이미 존재해도 에러를 안띄움(실무에서 거의 필수)


파일 읽기/쓰기

from pathlib import Path

p = Path('test.txt')
text = p.read_text(encoding='utf-8')
print(text)
hello world

파일 읽기
인코딩 명시하지 않으면 OS에 따라 깨질 수 있음

from pathlib import Path

p = Path('test.txt')
p.write_text('bye world', encoding='utf-8')

파일 쓰기
인코딩 명시하지 않으면 OS에 따라 깨질 수 있음


파일 목록 조회

from pathlib import Path

p = Path('.')

for f in p.iterdir():
    print(f)
data
main.py
test.txt

iterdir(): 모든 파일/디렉토리 순회


특정 파일 찾기

from pathlib import Path

for f in Path('.').glob('*.txt'):
    print(f)

glob: 특정 패턴 파일만 찾음


경로 정보 확인

from pathlib import Path

p = Path('data') / 'sample.txt'

print(p.name)
print(p.suffix)
print(p.stem)
print(p.parent)
sample.txt
.txt
sample
data

name: 파일 이름
suffix: 확장자명
stem: 확장자제외
parent: 부모 디렉토리


절대 경로

from pathlib import Path

p = Path('test.txt').resolve()

print(p)
C:\Users\MSI\OneDrive\바탕 화면\PythonStudy\test.txt

resolve(): 파일의 절대 경로를 반환하고 심볼릭 링크도 실제 경로로 반환


실전 패턴

프로젝트 루트 기준 경로

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent

현재 파이썬 파일이 위치한 디렉토리 경로를 기준으로 잡음
실행 위치가 바뀌어도 동일한 기준 경로를 유지

파일 안전하게 읽기

from pathlib import Path

p = Path('config.json')

if p.exists() and p.is_file():
    data = p.read_text(encoding='utf-8')

더 많은 실전 패턴은 다른 모듈들까지 살펴본 뒤 적용해보기로

0개의 댓글