Pythonで拡張子なしのファイル名を取得


91

これらのいずれかのようなファイル名がある場合:

1.1.1.1.1.jpg

1.1.jpg

1.jpg

拡張子なしでファイル名のみを取得するにはどうすればよいですか?正規表現は適切でしょうか?


回答:


203

ほとんどの場合、正規表現を使用しないでください。

os.path.splitext(filename)[0]

これ.bashrcにより、名前全体を保持することにより、ファイル名を正しく処理することもできます。


4
「git-1.7.8.tar.gz」では正しく機能せず、「。gz」のみが削除されます。これに使用basename[:-len(".tar.gz")]します。
11

28
@blueyed:「適切に機能しない」は見方の問題です。ファイル gzipファイルで、ベース名はgit-1.7.8.tarです。発信者が削除したいドットの数を正しく推測する方法はないためsplitext()、最後のドットのみを削除します。のようなエッジケースを処理したい場合は.tar.gz、手動で行う必要があります。明らかに、で終わるので、すべてのドットを取り除くことはできませんgit-1
Marcelo Cantos、2011



6

正規表現は必要ありません。os.path.splitextあなたの友だちです:

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')

5

stemメソッドを使用してファイル名を取得できます。

次に例を示します。

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.