Python
Python pathlib로 파일 경로를 다루는 법
문자열 결합 대신 pathlib를 사용해 운영체제에 독립적인 파일 경로와 탐색 코드를 작성합니다.
파일 자동화 코드는 경로 구분자와 문자열 결합 때문에 예상보다 쉽게 복잡해집니다. 표준 라이브러리의 pathlib는 경로를 값이 아닌 객체로 다루게 해 이 문제를 줄입니다.
Path 객체 만들기
현재 작업 디렉터리를 기준으로 data 폴더를 가리키는 경로는 다음처럼 만듭니다.
from pathlib import Path
data_dir = Path.cwd() / "data"
print(data_dir)
/ 연산자는 경로 조각을 결합합니다. Windows와 Linux에서 각 운영체제에 맞는 구분자를 사용하므로 직접 슬래시를 선택할 필요가 없습니다.
폴더와 파일 만들기
output_dir = Path("output")
output_dir.mkdir(parents=True, exist_ok=True)
report = output_dir / "report.txt"
report.write_text("작업 완료\n", encoding="utf-8")
텍스트를 읽고 쓸 때 인코딩을 명시하면 서로 다른 환경에서 결과가 달라지는 일을 예방할 수 있습니다.
조건에 맞는 파일 찾기
하위 폴더를 포함해 모든 Markdown 파일을 찾으려면 rglob을 사용합니다.
root = Path("docs")
for path in root.rglob("*.md"):
print(path.relative_to(root))
파일 처리 순서가 결과에 영향을 준다면 sorted()로 명시적으로 정렬해야 합니다.
자주 생기는 실수
Path 객체를 외부 라이브러리에 넘길 때 해당 라이브러리가 경로 객체를 지원하는지 확인합니다. 오래된 라이브러리라면 str(path)로 변환할 수 있습니다.
또한 exists() 확인과 실제 파일 사용 사이에는 다른 프로세스가 파일을 변경할 수 있습니다. 중요한 작업은 예외 처리를 함께 작성하는 편이 안전합니다.
결론
pathlib를 사용하면 경로 생성부터 탐색, 읽기와 쓰기까지 하나의 일관된 방식으로 표현할 수 있습니다. 새 프로젝트에서는 문자열 경로보다 먼저 고려할 만합니다.