파이썬 pathlib 모듈로 파일 경로를 쉽게 다루는 방법
🐍 os.path보다 직관적인 pathlib으로 파일 경로 문제를 한방에 해결해보세요
오늘은 파이썬을 사용할 때 자주 마주치는 파일 경로 처리 문제를 아주 간단하게 해결해주는 방법을 소개해드리려고 해요.
코딩 초보자분들께는 낯선 개념일 수 있지만, 경로 처리는 파일 입출력 작업을 할 때 절대 빠질 수 없는 핵심 요소죠.
예를 들어, 윈도우와 리눅스처럼 운영체제가 다르면 경로 구분자도 다르고, 상대경로와 절대경로의 개념도 헷갈릴 수 있어요.
이럴 때 등장한 해결사가 바로 pathlib 모듈입니다.
객체 지향 방식으로 동작하며 기존 os.path보다 훨씬 직관적이고 깔끔한 코드 작성을 가능하게 해준답니다.
이번 글에서는 pathlib의 기본 개념부터 자주 사용하는 메서드까지 하나하나 설명해드릴게요.
차근차근 읽어보시면 분명히 파일 경로 다루기가 쉬워질 거예요.
pathlib은 파이썬 3.4부터 도입된 표준 라이브러리입니다.
이제는 많은 개발자들이 os.path 대신 pathlib을 기본으로 사용하고 있는데요.
파일 존재 여부 확인, 파일명 변경, 폴더 내 파일 탐색, 경로 결합, 확장자 분리 등 다양한 작업을 더 직관적이고 간결하게 처리할 수 있습니다.
특히 객체 지향 방식으로 구성되어 있어서 메서드 체이닝이 가능하고, 파이썬답게 우아한 코드 작성을 도와줘요.
이 글에서는 pathlib의 주요 기능과 활용 예제를 직접 보여드리며 쉽게 따라 할 수 있도록 구성했습니다.
📋 목차
📁 pathlib이란 무엇인가요?
파이썬의 pathlib 모듈은 파일 시스템 경로를 다룰 수 있도록 설계된 객체 지향 인터페이스입니다.
파이썬 3.4 버전부터 표준 라이브러리로 포함되어 누구나 별도 설치 없이 사용할 수 있어요.
기존에 많이 사용되던 os.path 방식은 문자열 기반으로 작업해야 하기 때문에 복잡한 경로 조작 시 불편했지만, pathlib은 객체를 사용하기 때문에 훨씬 더 읽기 쉽고 유지보수하기 편합니다.
예를 들어, 파일 경로를 합치는 코드가 os.path에서는 이렇게 표현됩니다.
import os
file_path = os.path.join('home', 'user', 'documents', 'file.txt')
하지만 pathlib을 사용하면 다음처럼 훨씬 간결하게 표현할 수 있습니다.
from pathlib import Path
file_path = Path('home') / 'user' / 'documents' / 'file.txt'
이처럼 슬래시(/) 연산자 하나만으로도 경로를 직관적으로 연결할 수 있기 때문에 코드의 가독성이 크게 향상돼요.
또한 Path 객체는 다양한 메서드를 포함하고 있어서 파일 존재 여부 확인, 파일 이름 변경, 확장자 분리 등 자주 사용하는 작업을 손쉽게 처리할 수 있습니다.
💬 pathlib은 내부적으로 OS의 파일 시스템과 자연스럽게 연동되어 플랫폼에 관계없이 유연한 경로 처리를 지원합니다.
특히 윈도우, 맥, 리눅스 등 운영체제가 달라도 경로 구분자 문제 없이 동일한 코드를 사용할 수 있어 실무 프로젝트나 크로스플랫폼 환경에서 매우 유용하게 쓰이고 있어요.
📌 pathlib 기본 사용법 알아보기
pathlib을 사용하려면 우선 Path 클래스를 import 해야 합니다.
기본적으로 경로 생성, 파일/디렉터리 존재 여부 확인, 파일명 추출 등 다양한 기능을 제공합니다.
아래에서 pathlib의 핵심 사용법을 하나씩 살펴보겠습니다.
- 📌
Path('경로')로 경로 객체 만들기 - 🔍
.exists()로 경로 존재 여부 확인 - 📄
.is_file(),.is_dir()로 파일/폴더 여부 구분 - 🧩
.name,.suffix,.stem등으로 경로 정보 추출 - 🛠️
/연산자로 하위 경로 쉽게 연결
간단한 예제를 통해 위 기능들을 실제로 확인해볼게요.
from pathlib import Path
p = Path('/home/user/example.txt')
print(p.exists()) # 파일 또는 폴더가 존재하는지 확인
print(p.is_file()) # 파일인지 확인
print(p.is_dir()) # 디렉토리인지 확인
print(p.name) # example.txt
print(p.stem) # example
print(p.suffix) # .txt
이처럼 pathlib은 다양한 속성과 메서드를 직관적으로 사용할 수 있는 구조입니다.
초보자도 한 번만 써보면 금방 익숙해질 수 있을 만큼 사용법이 간단하죠.
💡 TIP: 경로는 항상 Path 객체로 만들어두면, 코드 전반에서 재사용하기도 좋고 디버깅도 훨씬 쉬워집니다.
🔍 자주 사용하는 메서드 정리
pathlib 모듈은 다양한 메서드를 제공하며, 이 중에서 실무나 프로젝트에서 자주 활용되는 것들을 정리해보았습니다.
각 메서드는 파일 또는 폴더를 다룰 때 자주 등장하므로 익혀두면 매우 유용합니다.
| 메서드 | 설명 |
|---|---|
| exists() | 경로가 실제로 존재하는지 확인 |
| is_file() | 해당 경로가 파일인지 확인 |
| is_dir() | 해당 경로가 디렉토리인지 확인 |
| rename() | 파일 또는 폴더의 이름 변경 |
| unlink() | 파일 삭제 |
| mkdir() | 새 디렉토리 생성 |
| rmdir() | 빈 디렉토리 삭제 |
| glob() | 패턴에 맞는 파일 목록 찾기 (하위 디렉토리 포함 X) |
| rglob() | 패턴에 맞는 파일 목록 찾기 (하위 디렉토리 포함 O) |
이 외에도 with open(Path) 방식으로 파일을 열거나, 경로를 resolve()하여 절대 경로로 변환하는 등 다양한 확장이 가능합니다.
pathlib은 단순히 경로를 표현하는 것을 넘어서 파일 시스템을 조작하는 기능까지 제공하는 매우 강력한 도구입니다.
💎 핵심 포인트:
자주 쓰는 메서드는 반드시 숙지하고 있어야 실전에서 빠르게 활용할 수 있습니다. 파이썬 공식 문서에서 예제와 함께 연습해보세요.
🧪 pathlib vs os.path 비교
많은 분들이 아직도 os.path을 사용하고 계시지만, pathlib은 이를 대체할 수 있을 만큼 강력하면서도 더 간결한 문법을 제공합니다.
두 방식의 주요 차이점을 정리해 보겠습니다.
| 기능 | os.path | pathlib |
|---|---|---|
| 경로 결합 | os.path.join(a, b) | Path(a) / b |
| 파일 존재 확인 | os.path.exists(p) | Path(p).exists() |
| 확장자 추출 | os.path.splitext(p) | Path(p).suffix |
| 파일 이름만 추출 | os.path.basename(p) | Path(p).name |
| 디렉토리명 추출 | os.path.dirname(p) | Path(p).parent |
표에서 보시듯 pathlib은 메서드 호출 방식이 훨씬 직관적입니다.
불필요한 괄호와 문자열 연산 없이 경로 객체를 다룰 수 있어 코드 작성 속도도 올라가고, 실수도 줄어듭니다.
⚠️ 주의: os.path는 파이썬 2.x에서도 사용할 수 있지만, pathlib은 3.4 이상에서만 지원됩니다. 파이썬 버전에 따라 사용 가능 여부를 반드시 확인하세요.
파이썬 3.10 이후로는 pathlib 사용이 사실상 표준처럼 자리잡고 있습니다.
이제는 os.path보다 pathlib을 먼저 익히는 것이 더 효율적이라고 할 수 있어요.
🚀 pathlib 실전 예제 모음
이제 pathlib의 개념과 사용법을 익혔다면, 실제 프로젝트나 자동화 스크립트에서 어떻게 활용할 수 있는지 실전 예제를 통해 살펴볼 차례입니다.
pathlib을 활용하면 복잡해 보이는 작업도 간단한 코드로 처리할 수 있습니다.
🗂️ 특정 폴더 내 모든 텍스트 파일 리스트
from pathlib import Path
target_dir = Path('./data')
txt_files = target_dir.glob('*.txt')
for file in txt_files:
print(file.name)
glob() 메서드는 지정된 패턴에 맞는 파일 목록을 반환합니다.
하위 폴더까지 탐색하려면 rglob()을 사용하세요.
📝 확장자가 .log인 파일 삭제
from pathlib import Path
for log_file in Path('./logs').rglob('*.log'):
log_file.unlink()
이처럼 unlink() 메서드를 사용하면 파일을 손쉽게 삭제할 수 있습니다.
주의: 이 작업은 되돌릴 수 없으니 신중하게 사용하세요.
⚠️ 주의: 실수로 중요한 파일을 삭제하지 않도록 exists()나 suffix 조건을 추가해 안전하게 처리하는 습관을 들이세요.
📦 파일 자동 분류 및 정리
from pathlib import Path
import shutil
downloads = Path('./downloads')
images_dir = downloads / 'images'
images_dir.mkdir(exist_ok=True)
for f in downloads.iterdir():
if f.suffix in ['.jpg', '.png']:
shutil.move(str(f), str(images_dir / f.name))
이 예제는 .jpg, .png 확장자 파일만 따로 폴더로 이동시켜 정리하는 코드입니다.
shutil.move()와 함께 사용하면 더 유용하게 확장할 수 있습니다.
❓ 자주 묻는 질문 (FAQ)
pathlib은 파이썬 몇 버전부터 사용할 수 있나요?
os.path와 병행해서 써도 괜찮을까요?
윈도우와 리눅스에서 코드가 다르게 작동하지 않나요?
파일 읽기/쓰기에도 사용할 수 있나요?
open() 함수와 함께 사용하면 파일 입출력도 문제없이 할 수 있어요.
pathlib으로 파일명을 변경하려면 어떻게 하나요?
rename() 메서드를 사용하면 기존 파일의 이름을 새 이름으로 쉽게 바꿀 수 있어요.
pathlib으로도 파일 삭제가 가능한가요?
unlink(), 디렉토리는 rmdir()로 삭제할 수 있습니다.
디렉토리가 없으면 자동으로 만들어주나요?
mkdir() 사용 시 parents=True, exist_ok=True 옵션을 추가하면 상위 디렉토리까지 자동 생성할 수 있어요.
파일 확장자를 조건으로 필터링할 수 있나요?
suffix 속성을 사용해 원하는 확장자만 필터링할 수 있어요. 예: if path.suffix == '.txt'
🧭 pathlib으로 파이썬 파일 경로 관리를 간단하게
파일 경로를 다루는 작업은 모든 파이썬 프로젝트에서 빠지지 않고 등장합니다.
그동안은 os.path 모듈을 통해 경로를 문자열로 다루는 방식이 일반적이었지만, 이제는 객체 지향적이고 더 직관적인 pathlib을 사용하는 시대입니다.
이 글에서는 pathlib이 어떤 점에서 유용한지, 어떻게 사용하는지, 그리고 실전에서는 어떻게 활용할 수 있는지를 단계별로 살펴보았습니다.
pathlib을 사용하면 코드가 훨씬 간결해지고 가독성도 높아집니다.
운영체제 구분 없이 동일한 코드로 경로를 다룰 수 있다는 점도 매우 큰 장점이죠.
exists(), is_file(), glob(), rename() 등 강력한 메서드를 잘 활용하면 파일 탐색부터 정리, 삭제까지 모두 자동화할 수 있습니다.
이제 여러분의 프로젝트에서도 pathlib을 적극적으로 활용해보세요.
더 깔끔하고 유지보수하기 쉬운 파이썬 코드가 완성될 거예요.
🏷️ 관련 태그 : 파이썬파일처리, pathlib모듈, os.path비교, 파이썬자동화, 파일경로관리, 프로그래밍기초, 파이썬초보, 파이썬팁, 파일입출력, 파이썬라이브러리