프로그래밍/Python

[python] 경로 문자열에서 파일명, 확장자 분리하기

채윤아빠 2024. 5. 22. 09:29
728x90
반응형

개요

전체 경로 문자열에서 폴더명, 파일명, 확장자명을 각각 분리하는 방법을 알아 보겠습니다.


폴더명

다음과 같이 os.path.dirname() 함수를 이용하면 전체 경로 문자열에서 폴더명을 손쉽게 얻을 수 있습니다.

from os import path

file_path = '/path/to/filename.ext'
dirname = path.dirname(file_path)
print(f'{dirname=}')

# dirname='/path/to'

파일명 (확장자 포함)

다음과 같이 os.path.basename() 함수를 이용하면 전체 경로 문자열에서 확장자가 포함된 파일명을 손쉽게 얻을 수 있습니다.

from os import path

file_path = '/path/to/filename.ext'
basename = path.basename(file_path)
print(f'{basename=}')

# basename='filename.ext'

파일이름, 확장자 분리하기

다음과 같이 os.path.splitext() 함수를 이용하면 전체 경로 문자열에서 폴더명을 손쉽게 얻을 수 있습니다.

from os import path

file_path = '/path/to/filename.ext'
filenames = path.splitext(path.basename(file_path))
print(f'{filenames=}')

# filenames=('filename', '.ext')

 

다음은 여러 가지 파일이름 형태에 따른 os.path.splitext() 함수의 실행 결과를 확인해 보도록 하겠습니다.

from os.path import splitext

print(f"{splitext('bar')=}")
print(f"{splitext('foo.bar.exe')=}")
print(f"{splitext('/foo/bar.exe')=}")
print(f"{splitext('.cshrc')=}")
print(f"{splitext('/foo/a....jpeg')=}")
print(f"{splitext('/foo/...a.jpeg')=}")
print(f"{splitext('/foo/...a....jpeg')=}")
print(f"{splitext('/foo/....jpeg')=}")
print(f"{splitext('')=}")
print(f"{splitext(None)=}")

 

위 코드를 실행한 결과는 다음과 같습니다.

splitext('bar')=('bar', '')
splitext('foo.bar.exe')=('foo.bar', '.exe')
splitext('/foo/bar.exe')=('/foo/bar', '.exe')
splitext('.cshrc')=('.cshrc', '')
splitext('/foo/a....jpeg')=('/foo/a...', '.jpeg')
splitext('/foo/...a.jpeg')=('/foo/...a', '.jpeg')
splitext('/foo/...a....jpeg')=('/foo/...a...', '.jpeg')
splitext('/foo/....jpeg')=('/foo/....jpeg', '')
splitext('')=('', '')
Traceback (most recent call last):
  File "D:\Dev\Python\python-test\general\os\split_ext.py", line 29, in 
    print(f"{splitext(None)=}")
  File "C:\Dev\Python\Python310\lib\ntpath.py", line 230, in splitext
    p = os.fspath(p)
TypeError: expected str, bytes or os.PathLike object, not NoneType

 

파일명에 따라서 제가 생각했던 것과는 결과가 다르게 나와 약간 혼란스러운 것도 있었습니다.


참고자료