Python에서 확장자없이 파일 이름 가져 오기


답변:


203

대부분의 경우 정규식을 사용하면 안됩니다.

os.path.splitext(filename)[0]

이것은 또한 .bashrc전체 이름을 유지하여 올바르게 파일 이름을 처리합니다 .


4
"git-1.7.8.tar.gz"에서는 제대로 작동하지 않으며 ".gz"만 제거합니다. 나는 이것을 위해 사용 basename[:-len(".tar.gz")]합니다.
blueyed

28
@blueyed : "제대로 작동하지 않습니다"는 관점의 문제입니다. 파일 gzip 파일이며 기본 이름은 git-1.7.8.tar. 발신자가 제거하려는 점 수를 정확하게 추측 할 수있는 방법이 없으므로 splitext()마지막 점만 제거합니다. 와 같은 가장자리 케이스를 처리하려면 손으로 처리 .tar.gz해야합니다. 으로 끝날 것이기 때문에 모든 점을 제거 할 수는 없습니다 git-1.
Marcelo Cantos 2011


10

정규식으로이 작업을 수행해야한다면 다음과 같이 할 것입니다.

s = re.sub(r'\.jpg$', '', s)

7

stem 메서드를 사용 하여 파일 이름을 가져올 수 있습니다 .

예를 들면 다음과 같습니다.

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file

6

정규식이 필요하지 않습니다. os.path.splitext당신의 친구입니다:

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.