Pythonでパス文字列からファイル名・フォルダ名・拡張子を取得・結合する方法
Pythonでファイル操作を行う際、パス文字列からファイル名、フォルダ名、拡張子を取得したり、それらを結合したりする処理は頻繁に使用されます。本記事では、os.path
モジュールとpathlib
モジュールを使った効率的な方法を解説します。
os.pathを使用した基本的なパス操作
ファイル名の取得
import os
path = "/home/user/documents/sample.txt"
filename = os.path.basename(path)
print(filename) # sample.txt
フォルダ名(ディレクトリ名)の取得
import os
path = "/home/user/documents/sample.txt"
dirname = os.path.dirname(path)
print(dirname) # /home/user/documents
拡張子の取得
import os
path = "/home/user/documents/sample.txt"
name, ext = os.path.splitext(path)
print(ext) # .txt
print(name) # /home/user/documents/sample
パスの結合
import os
folder = "/home/user/documents"
filename = "sample.txt"
full_path = os.path.join(folder, filename)
print(full_path) # /home/user/documents/sample.txt
pathlibを使用したモダンなパス操作
Python 3.4以降では、pathlib
モジュールを使用することでより直感的にパス操作を行えます。
ファイル名・フォルダ名・拡張子の取得
from pathlib import Path
path = Path("/home/user/documents/sample.txt")
print(path.name) # sample.txt (ファイル名)
print(path.parent) # /home/user/documents (親ディレクトリ)
print(path.suffix) # .txt (拡張子)
print(path.stem) # sample (拡張子なしファイル名)
パスの結合
from pathlib import Path
folder = Path("/home/user/documents")
filename = "sample.txt"
full_path = folder / filename
print(full_path) # /home/user/documents/sample.txt
実践的な使用例
複数の拡張子を持つファイルの処理
from pathlib import Path
path = Path("/home/user/backup.tar.gz")
print(path.suffixes) # ['.tar', '.gz']
print(path.suffix) # .gz (最後の拡張子)
ファイル名から拡張子を除いた部分の取得
import os
from pathlib import Path
# os.pathを使用
path = "/home/user/documents/sample.txt"
basename = os.path.basename(path)
name_only = os.path.splitext(basename)[0]
print(name_only) # sample
# pathlibを使用
path = Path("/home/user/documents/sample.txt")
print(path.stem) # sample
まとめ
パス操作は、従来のos.path
モジュールと新しいpathlib
モジュールの両方で実現できます。pathlib
はより直感的で読みやすいコードを書けるため、Python 3.4以降を使用している場合はpathlib
の使用を推奨します。ファイル処理のプログラムを書く際は、これらの方法を適切に使い分けて効率的な開発を行いましょう。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座