pathlib에서 name은 경로의 마지막 이름, stem은 거기서 마지막 접미사를 뺀 이름입니다. suffix로 마지막 접미사를, suffixes로 접미사 목록을 얻습니다. 점이 여러 개 있는 가상 백업 경로에 네 속성을 적용해 보겠습니다.
from pathlib import Path
path = Path("exports/batch.07.tar.gz")
print("name", path.name)
print("stem", path.stem)
print("suffix", path.suffix)
print("suffixes", path.suffixes)
name batch.07.tar.gz
stem batch.07.tar
suffix .gz
suffixes ['.07', '.tar', '.gz']
stem에서 빠진 조각은 .gz 하나라 .tar가 남습니다. suffixes에는 배치 번호로 붙인 .07도 들어갑니다. 이 속성들은 경로 문자열을 기준으로 분해하므로, 파일의 실제 형식이 필요한 작업에서는 내용을 확인해야 합니다.
앞에 점이 붙은 이름과 끝에 점이 붙은 이름
점이 있는 이름이라도 점의 위치에 따라 결과가 달라집니다. 아래 코드는 가상의 POSIX 경로를 해석합니다. !r을 써서 빈 접미사를 ''로 표시했습니다.
from pathlib import PurePosixPath
for value in ("exports/.env", "exports/report."):
path = PurePosixPath(value)
print(f"{path.name!r} {path.stem!r} {path.suffix!r} {path.suffixes}")
'.env' '.env' '' []
'report.' 'report' '.' ['.']
.env의 첫 점은 이름에 남습니다. report.의 마지막 점은 Python 3.14부터 유효한 접미사여서 stem이 report가 됩니다. CPython 3.13.9의 구현 규칙을 같은 입력에 적용하면 stem은 report., suffix는 '', suffixes는 []입니다.
경로를 만든 쪽의 구분자 규칙을 따릅니다
Path는 실행 중인 운영체제의 경로 규칙을 따릅니다. Windows에서 받은 백슬래시 경로를 다른 환경에서도 같은 규칙으로 읽으려면 PureWindowsPath를 쓰세요. 아래에서는 같은 문자열을 PurePosixPath로도 읽어 비교합니다.
from pathlib import PurePosixPath, PureWindowsPath
value = r"C:\exports\batch.07.tar.gz"
print(PureWindowsPath(value).name)
print(PurePosixPath(value).name)
batch.07.tar.gz
C:\exports\batch.07.tar.gz
Windows 규칙에서는 백슬래시가 경로 구분자입니다. POSIX 규칙은 백슬래시를 이름 속 문자로 읽으므로 이 예제에서는 전체 문자열이 마지막 이름으로 남습니다.
표시한 출력은 Windows의 CPython 3.14.3에서 얻었습니다. 속성과 3.14의 변경은 Python의 pathlib 문서, 두 경로 규칙은 순수 경로 문서에 나옵니다. 3.13.9 비교는 해당 판본의 구현에 근거합니다.
이미 얻은 파일명에서 정해진 끝 문자열만 떼려면 strip과 removesuffix의 차이에서 그 방법을 볼 수 있습니다.