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の柔軟性と便利なモジュール群を使うことで、ファイル操作は驚くほど簡単になります。
コメント