파일 이름에서 확장자를 추출하는 기능이 있습니까?
답변
예. 사용하십시오 os.path.splitext
( Python 2.X 설명서 또는 Python 3.X 설명서 참조 ).
>>> import os
>>> filename, file_extension = os.path.splitext('/path/to/somefile.ext')
>>> filename
'/path/to/somefile'
>>> file_extension
'.ext'
대부분의 수동 문자열 분할 시도와 달리, 확장 대신 확장이없는 것으로 os.path.splitext
올바르게 처리 /a/b.c/d
하고 확장 대신 확장 이없는 것으로 .c/d
취급 .bashrc
합니다 .bashrc
.
>>> os.path.splitext('/a/b.c/d')
('/a/b.c/d', '')
>>> os.path.splitext('.bashrc')
('.bashrc', '')
답변
import os.path
extension = os.path.splitext(filename)[1]
답변
버전 3.4의 새로운 기능.
import pathlib
print(pathlib.Path('yourPath.example').suffix) # '.example'
pathlib
아직 아무도 언급 하지 않은 것이 놀랍습니다 pathlib
.
접미사가 모두 필요한 경우 (예 :가있는 경우 .tar.gz
) .suffixes
해당 목록을 반환합니다.
답변
import os.path
extension = os.path.splitext(filename)[1][1:]
점없이 확장자의 텍스트 만 가져옵니다.
답변
하나의 옵션이 점에서 분리 될 수 있습니다.
>>> filename = "example.jpeg"
>>> filename.split(".")[-1]
'jpeg'
파일 확장자가 없으면 오류가 없습니다.
>>> "filename".split(".")[-1]
'filename'
그러나 조심해야합니다.
>>> "png".split(".")[-1]
'png' # But file doesn't have an extension
답변
JPG가 왜 목록에 표시되지 않는지 궁금해하지 않기 위해 더 낮은 값을 추가 할 가치가 있습니다.
os.path.splitext(filename)[1][1:].strip().lower()
답변
위의 모든 솔루션이 작동하지만 Linux에서는 확장 문자열 끝에 줄 바꿈이있어 일치하는 것을 막을 수 있습니다. strip()
끝에 메소드를 추가하십시오 . 예를 들면 다음과 같습니다.
import os.path
extension = os.path.splitext(filename)[1][1:].strip()