파이썬의 os.path.join 메서드는 하나 이상의 경로 이름을 하나의 경로로 합쳐 줍니다. 이 메서드는 주로 os.walk() 같은 os 모듈의 함수들과 함께 사용되어 파일이나 폴더의 최종 경로를 만들 때 활용됩니다. os.path.join()은 파일 경로에 필요한 디렉터리 구분자(슬래시)를 자동으로 추가해 줍니다.
Python os.path.join 사용 방법
파이썬에서 파일을 다루다 보면 복잡한 경로 때문에 골머리를 앓아본 적이 한 번쯤 있을 것입니다.
파일을 사용하려면 해당 파일이 위치한 디렉터리를 지정해야 합니다. 생각보다 간단해 보이지만, 올바른 경로를 지정하지 않으면 프로그램이 제대로 작동하지 않습니다.
이 글에서는 파일 경로의 여러 요소를 하나의 완전한 경로로 합쳐 주는 os.path.join 메서드에 대해 알아보겠습니다. 두 가지 예제를 통해 이 메서드를 쉽게 익혀 보세요.
파일 경로란 무엇일까?
파일 경로는 파일과 폴더 이름의 연속입니다. 이 이름들의 나열은 컴퓨터 운영체제(OS)상의 특정 위치로 안내합니다.
다음 경로를 예시로 살펴보겠습니다:
/Users/James/tutorials
이 경로는 "tutorials"라는 폴더로 이어집니다. 이 폴더 안의 특정 파일이나 디렉터리에 접근하려면 파일 이름을 붙여 지정하면 됩니다:
/Users/James/tutorials/README.md
물론 파이썬에서 이런 파일 경로를 직접 손으로 작성할 수도 있습니다. 하지만 그렇게 하면 번거롭고 실수하기 쉽습니다. 바로 이럴 때 os.path.join이 유용합니다.
Python os.path.join이란?
os.path.join은 여러 개의 경로 이름을 하나의 완전한 경로로 합쳐 줍니다. 즉, 매번 경로를 직접 하드코딩하는 대신, 경로의 여러 조각을 손쉽게 하나로 병합할 수 있습니다.
이 함수를 사용하려면 먼저 코드에 os 라이브러리를 임포트해야 합니다:
import os
os.path.join() 메서드의 기본 문법은 다음과 같습니다. 이 함수는 하나로 합칠 경로들을 인자로 받습니다:
os.path.join(path1, path2...)
path1, path2 등의 값들은 하나의 경로로 결합하고 싶은 경로들을 의미합니다.
path = os.path.join("/Users/James/tutorials", "index.html")
print(path)
이 코드는 /Users/James/tutorials/index.html을 반환합니다. os.path.join 메서드는 지정된 절대 경로("/Users/James/tutorials")를 기준으로 뒤에 index.html을 덧붙입니다.
특히 편리한 점은, os.path.join 메서드가 필요한 위치에 자동으로 슬래시(디렉터리 구분자)를 삽입해 준다는 것입니다. 덕분에 문자열을 직접 이어 붙이는 방식보다 훨씬 깔끔하고 안전하게 경로를 만들 수 있습니다.
os.path.join 파이썬 예제
이번에는 현재 작업 디렉터리 안에 있는 "tutorials/web/" 폴더의 "index.html" 파일 경로를 만들어 보겠습니다.
먼저 os 라이브러리를 임포트합니다:
import os
다음으로 현재 작업 디렉터리를 가져와서 여기에 파일 경로를 추가하겠습니다:
cwd = os.getcwd()
이 코드는 현재 작업 디렉터리인 /Users/James/tutorials를 반환합니다. "tutorials" 폴더는 사용자 홈 디렉터리 안에 있습니다. 이 정보를 활용해 작업 디렉터리 끝에 "tutorials/web"을 추가할 수 있습니다:
web_tutorials = os.path.join(cwd, "tutorials/web") print(web_tutorials)
이 코드는 /Users/James/tutorials/web을 반환합니다. 코드가 경로 요소들을 하나로 합치면서 경로 이름 사이에 슬래시("/")를 자동으로 넣어 준 것을 확인할 수 있습니다. 이 경로는 기존 경로 안의 "web" 폴더를 가리킵니다.
os.path.join으로 폴더 내 파일 목록 조회하기
이번에는 os.path.join 메서드를 사용해 폴더 안의 모든 파일 전체 경로를 출력해 보겠습니다. 파일 시스템의 "Desktop"(바탕화면) 폴더에 있는 모든 파일을 나열할 것입니다. 이 폴더는 드라이브의 "/Users/James/" 디렉터리에 위치합니다.
먼저 os 라이브러리를 임포트하고 검색할 디렉터리를 정의합니다:
import os cwd = os.getcwd() desktop = os.path.join(cwd, "Desktop")
이 코드는 현재 작업 디렉터리를 기준으로 Desktop 폴더의 파일 경로를 생성합니다. 다음으로 파이썬의 os.listdir() 메서드를 사용해 이 폴더 안의 모든 파일 목록을 가져옵니다:
files = os.listdir(desktop)
이 메서드는 Desktop 폴더에 있는 모든 파일의 이름 목록을 반환하지만, 파일의 경로는 포함하지 않습니다. 이제 이 파일 목록을 콘솔에 출력해 보겠습니다. os.path.join과 for 반복문을 사용해 각 파일의 전체 경로를 출력합니다:
for f in files: print(os.path.join(desktop, f))
이 코드는 Desktop 폴더의 모든 파일을 순회하면서 각 파일 이름을 Desktop 폴더의 경로와 합칩니다. 실행 결과는 다음과 같습니다:
/Users/James/Desktop/.DS_Store /Users/James/Desktop/Notes.md /Users/James/Desktop/To-dos.md
바탕화면에는 .DS_Store, Notes.md, To-dos.md 세 개의 파일이 있습니다. 이처럼 os.path.join()을 사용하면 각 파일의 전체 경로를 손쉽게 생성할 수 있습니다.
마무리
os.path.join 메서드는 경로 이름의 여러 요소를 결합하여 하나의 완전한 경로를 만들어 줍니다.
이 메서드를 사용하면 두 개 이상의 경로 요소를 간편하게 합칠 수 있으며, 필요한 위치에는 슬래시("/")가 자동으로 삽입됩니다.
파이썬 프로그래밍을 더 깊이 배우고 싶다면 파일 입출력과 os 모듈의 다른 함수들도 함께 익혀 보시기 바랍니다.