[python] 파이썬에서 파일 이름에서 확장자 추출

파일 이름에서 확장자를 추출하는 기능이 있습니까?



답변

예. 사용하십시오 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()