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爆速講座