Pythonでファイルパスからファイル名を取り出す

IT技術

Pythonでファイルパスからファイル名を取り出す方法。備忘録です。参考になるかわかりませんが、一読ください。

スポンサーリンク

やりたいこと

例えば、次のようなファイルパスがあるとします。

path/to/your/directory/df_object.csv

このパスからファイル名 df_object.csv だけを取り出し、変数に格納したいと考えています。この手法は、ディレクトリ内の他のファイルを読み込む場合にも非常に有用です。さらに、ファイル出力時にファイル名を動的に使用することも可能になります。

方法

Pythonでは、ファイルパスからファイル名を抽出するために os.path モジュールや pathlib モジュールを利用することができます。以下に、それぞれの方法について紹介します。

方法1: os.pathモジュールを使用する

os.path モジュールの basename 関数を使うことで、簡単にファイル名を取得することができます。

import os

file_path = 'path/to/your/directory/df_object.csv'
file_name = os.path.basename(file_path)

print(file_name)  # 出力: df_object.csv

方法2: pathlibモジュールを使用する

pathlib モジュールを使用すると、より直感的なコードを書くことができます。

from pathlib import Path

file_path = Path('path/to/your/directory/df_object.csv')
file_name = file_path.name

print(file_name)  # 出力: df_object.csv

これにより、任意のファイルパスから簡単にファイル名を取り出すことができます。

応用: for文と組み合わせる

同じフォルダ内のすべてのファイルを対象にしたい場合には、for文を使って以下のように書くことができます。

from pathlib import Path

directory_path = Path('path/to/your/directory')
for file_path in directory_path.iterdir():
    if file_path.is_file():
        file_name = file_path.name
        print(file_name)

上記のコードでは、指定したディレクトリ内のすべてのファイル名を取得して出力しています。

応用

課題: 2階層下にあるディレクトリの.xlsxファイル名を全て抽出する

次に、ディレクトリの2階層下にある .xlsx ファイルをすべて抽出する方法について説明します。

pathlib モジュールの rglob メソッドを使うことで、再帰的にディレクトリを探索することができます。

from pathlib import Path

directory_path = Path('path/to/your/directory')
xlsx_files = directory_path.rglob('*.xlsx')

for xlsx_file in xlsx_files:
    print(xlsx_file.name)

このコードは、指定したディレクトリおよびそのサブディレクトリ(2階層下まで)にあるすべての .xlsx ファイルの名前を出力します。

まとめ

以上、Pythonを使ってファイルパスからファイル名を抽出する方法について説明しました。os.pathモジュールとpathlibモジュールを使用することで、簡単にこの操作が可能です。また、for文や再帰的な探索を組み合わせることで、任意の条件に一致するファイルを効率よく取得することができます。ぜひ、これらの方法を活用してみてください!


この記事を参考に、あなたも自分のプロジェクトでファイル名の操作を効率化し、作業の自動化を実現してみてください。Pythonの柔軟性と便利なモジュール群を使うことで、ファイル操作は驚くほど簡単になります。

コメント

タイトルとURLをコピーしました