Python os.path 모듈이란?
파이썬의 os.path 모듈은 시스템의 다양한 위치에 있는 파일을 처리할 때 널리 사용되는 표준 라이브러리입니다. 경로 이름을 연결하거나 정규화하고, 원하는 정보를 추출하는 등 다양한 용도로 활용됩니다. 이 모듈의 함수들은 매개변수로 바이트(bytes) 또는 문자열(string) 객체만 허용하며, 실행 결과는 코드가 동작하는 운영체제(OS)에 따라 달라집니다.
1. os.path.basename – 경로의 마지막 요소 가져오기
basename() 함수는 경로에서 마지막 부분, 즉 폴더 이름 또는 파일 이름을 반환합니다. 윈도우는 역슬래시(\), 리눅스·유닉스 계열은 슬래시(/)를 경로 구분자로 사용한다는 점에 유의하세요.
import os
# Windows에서
fldr = os.path.basename("C:\\Users\\xyz\\Documents\\My Web Sites")
print(fldr)
file = os.path.basename("C:\\Users\\xyz\\Documents\\My Web Sites\\intro.html")
print(file)
# Linux/macOS 등 Unix 계열에서
fldr = os.path.basename("/Documents/MyWebSites")
print(fldr)
file = os.path.basename("/Documents/MyWebSites/music.txt")
print(file)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
My Web Sites intro.html MyWebSites music.txt
2. os.path.dirname – 상위 디렉터리 경로 가져오기
dirname() 함수는 지정한 폴더나 파일이 위치한 디렉터리(상위 경로)를 반환합니다.
import os
# Windows에서
DIR = os.path.dirname("C:\\Users\\xyz\\Documents\\My Web Sites")
print(DIR)
# Unix 계열에서
DIR = os.path.dirname("/Documents/MyWebSites")
print(DIR)
실행 결과는 다음과 같습니다.
C:\Users\xyz\Documents /Documents
3. os.path.isfile – 파일 존재 여부 확인하기
주어진 전체 경로가 실제 파일을 가리키는지 확인해야 할 때가 있습니다. isfile() 함수는 파일이 존재하면 True, 존재하지 않거나 경로가 폴더를 가리키면 False를 반환합니다. 폴더 여부를 확인하려면 os.path.isdir()을 사용하면 됩니다.
import os
# Windows에서
IS_FILE = os.path.isfile("C:\\Users\\xyz\\Documents\\My Web Sites") # 폴더 → False
print(IS_FILE)
IS_FILE = os.path.isfile("C:\\Users\\xyz\\Documents\\My Web Sites\\intro.html") # 파일 → True
print(IS_FILE)
# Unix 계열에서
IS_FILE = os.path.isfile("/Documents/MyWebSites") # 폴더 → False
print(IS_FILE)
IS_FILE = os.path.isfile("/Documents/MyWebSites/music.txt") # 파일 → True
print(IS_FILE)
실행 결과는 다음과 같습니다.
False True False True
4. os.path.normpath – 경로 정규화하기
normpath() 함수는 중복된 슬래시를 제거하고 현재 운영체제에 맞는 경로 구분자로 변환하여 경로를 깔끔하게 정규화해 주는 흥미로운 기능을 제공합니다. 실행 환경(OS)에 따라 결과가 달라지는 것을 아래 예시에서 확인할 수 있습니다.
import os
# Windows 경로
NORM_PATH = os.path.normpath("C:/Users/Pradeep/Documents/My Web Sites")
print(NORM_PATH)
# Unix 경로
NORM_PATH = os.path.normpath("/home/ubuuser//Documents/")
print(NORM_PATH)
운영체제별 실행 결과는 다음과 같습니다.
# Windows에서 실행한 경우 C:\Users\Pradeep\Documents\My Web Sites \home\ubuuser\Documents # Linux에서 실행한 경우 C:/Users/Pradeep/Documents/My Web Sites /home/ubuuser/Documents
마무리
os.path 모듈은 운영체제와 무관하게 일관된 방식으로 파일 경로를 다룰 수 있게 해 주는 강력한 도구입니다. 파이썬 3.4 이상에서는 객체 지향 방식의 pathlib 모듈도 함께 활용해 보세요. 두 모듈을 적절히 조합하면 크로스 플랫폼 환경에서도 안전하고 읽기 쉬운 파일 처리 코드를 작성할 수 있습니다.