Python パスから拡張子なしのファイル名を取得する
-
Python の
pathlib.path().stem
メソッドを使ってパスから拡張子のないファイル名を取得する -
パスから拡張子なしのファイル名を取得する Python の
os.path.splitext()
とstring.split()
メソッドを使用する -
パスからファイル名を取得する Python の
os.path.basename()
とos.path.splitext()
メソッドを使用する
このチュートリアルでは、Python でファイルパスから拡張子なしのファイル名を取得する様々な方法を実演します。例えば、Desktop/folder/myfile.txt
のように、文字列の形で利用可能なファイルパスのリストからファイル名を取得することが目的で、拡張子 .txt
のないファイル名 myfile
だけを取得します。
Python の pathlib.path().stem
メソッドを使ってパスから拡張子のないファイル名を取得する
path().stem
メソッドはファイルのパスを入力として受け取り、それをファイルパスから抽出してファイル名を返します。例えば、パス Desktop/folder/myfile.txt
から .txt
の拡張子を除いた myfile
を返します。
以下のコード例は、path().stem
を用いてファイルパスから拡張子なしのファイル名を取得する方法を示しています。
from pathlib import Path
file_path = "Desktop/folder/myfile.txt"
file_name = Path(file_path).stem
print(file_name)
出力:
myfile
パスから拡張子なしのファイル名を取得する Python の os.path.splitext()
と string.split()
メソッドを使用する
モジュールの os
の path.splitext()
メソッドはファイルパスを文字列として受け取り、出力としてファイルパスとファイル拡張子を返します。
ファイルパスからファイル名を取得したいので、まず os.path.splitext()
メソッドを用いてファイルパスから拡張子を削除します。分割結果の最初の要素は拡張子のないファイルパスです。この結果はさらに /
を区切り文字として用いて分割されます。最後の要素は拡張子なしのファイル名になります。以下のコード例では、path.splitext()
メソッドと string.split()
メソッドを用いてファイルパスから拡張子なしのファイル名を取得する方法を示します。
import os
file_path = "Desktop/folder/myfile.txt"
file_path = os.path.splitext(file_path)[0]
file_name = file_path.split("/")[-1]
print(file_name)
出力:
test
パスからファイル名を取得する Python の os.path.basename()
と os.path.splitext()
メソッドを使用する
Python では、os
モジュールの path.basename()
メソッドはファイルパスを入力として受け取り、ファイルパスから抽出したベースネームを返します。例えば、Desktop/folder/myfile.txt
のベースネームは myfile.txt
です。
ファイルパスからファイル名を取得したいので、path.basename()
メソッドを用いてベースネームを抽出し、path.splitext()
を用いてファイル名を抽出します。以下のコード例は、path.basename()
メソッドと path.splitext()
メソッドを用いてファイルパスからファイル名を取得する方法を示しています。
import os
file_path = "Desktop/folder/myfile.txt"
basename = os.path.basename(file_path)
file_name = os.path.splitext(basename)[0]
print(file_name)
出力:
myfile
myfile.tar.gz
のような場合、上で説明したすべてのメソッドは myfile.tar
をファイル名として返します。例えば、Desktop/folder/myfile.tar.gz
のパスから myfile.tar
の代わりに myfile
のように .
の後の部分を除いたファイル名を取得したい場合、string.index()
メソッドを用いて myfile.tar
から myfile
だけを抽出することができます。しかし、このメソッドの欠点は、my.file.tar.gz
のように .
がファイル名の一部である場合、my
をファイル名として返してしまうことです。
以下のコード例では、string.index()
を用いて .tar
を myfile.tar
の出力から削除する方法を示します。
file_name = "myfile.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)
file_name = "my.file.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)
出力:
myfile
my