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
파일명에 따라서 제가 생각했던 것과는 결과가 다르게 나와 약간 혼란스러운 것도 있었습니다.
참고자료
- "os.path — Common pathname manipulations":https://docs.python.org/3/library/os.path.html
'프로그래밍 > Python' 카테고리의 다른 글
[opencv] 종횡비 고정하여 이미지 크기 조정하기 (0) | 2024.06.01 |
---|---|
[Python] numpy 이용 시 발생한 'ImportError: libopenblas.so.0: cannot open shared object file' 오류 (0) | 2024.05.28 |
[python] RGBA 형식의 이미지 찾기 (0) | 2024.05.21 |
[python] 아스키가 아닌 문자가 포함된 이미지 파일 로딩하기 (imread) (0) | 2024.05.13 |
[PyQt5] 사용자 위젯에서 배경 그리기 (0) | 2023.11.27 |