こんにちは!ゆーや(@yuyamanm118712)です。
Pythonは非常に柔軟で、多くの用途に応用できるプログラミング言語です。その中でも、ファイル操作は非常に頻繁に行われる作業の一つです。
今回はPythonを使って、指定したフォルダ内のファイル名を取得する方法を紹介します。特に、初心者向けに分かりやすく解説していきますので、ぜひ参考にしてください。
os モジュールの紹介
Pythonでは、osという標準ライブラリを使ってファイルやフォルダの操作が簡単に行えます。
このモジュールを使用すると、ディレクトリの作成や削除、ファイルの移動、ファイル名の取得など様々な操作が可能です。まずは、osモジュールを使ってディレクトリ内のファイル名を取得する方法を見ていきましょう。
os モジュールはインストール不要
osモジュールはPythonに標準で搭載されているため、特別なインストールは不要です。以下で紹介するコードを実行するだけで、すぐに使用できます。
インストール不要なので気軽に使えるね!
os.listdir() を使ってファイル名を取得する
前提として次のようなフォルダ構成だとします!
まずは、指定したフォルダ内のファイル名を取得する基本的な方法です。os.listdir()は、指定したディレクトリ内に存在するすべてのファイルとフォルダをリスト形式で返してくれます。
import os
# ファイル名を取得したいフォルダのパスを指定
folder_path = "./files"
# 指定したフォルダ内のファイルとフォルダ名をリストとして取得
files = os.listdir(folder_path)
# ファイル名を一つずつ表示
for file in files:
print(file)
## 出力
#01
#02
#03
#test.png
#test.txt
#test.xlsx
ただ、これだと「ファイル」と「フォルダ」の区別がついていないね…
そんな方は次の方法を見よう!
ファイルのみを取得する
ファイルの情報を取得したいのにフォルダが出てしまうときは次のようにしましょう!
import os
# ファイル名を取得したいフォルダのパスを指定
folder_path = "./files"
# 指定したフォルダ内のファイルとフォルダ名をリストとして取得
files = os.listdir(folder_path)
# ファイル名を一つずつ表示
for file in files:
if os.path.isfile(os.path.join(folder_path, file)):
print(file)
## 出力
#test.png
#test.txt
#test.xlsx
isfile()でファイルかどうか判定することでファイルのみを取得できるね!
ただ、サブフォルダの中身も取得したい…そんな方は次の方法!
フォルダ内のサブフォルダも含めたファイル名を取得する方法
もし、サブフォルダ内にあるファイルもすべて取得したい場合は、再帰的にフォルダ内を探索する必要があります。これにはos.walk()という関数が便利です。この関数は指定したフォルダ内の全てのフォルダとファイルを再帰的に探索し、ファイルパスを取得してくれます。
import os
# ファイル名を取得したいフォルダのパスを指定
folder_path = "./files"
# 指定したフォルダ内のファイルとフォルダ名をリストとして取得
files = os.listdir(folder_path)
# フォルダ内のすべてのファイルを再帰的に取得
for root, dirs, files in os.walk(folder_path):
for file in files:
print(os.path.join(root, file))
## 出力
#./files\test.png
#./files\test.txt
#./files\test.xlsx
#./files\01\excel01.xlsx
#./files\01\test01.txt
#./files\02\excel02.xlsx
#./files\02\test02.txt
#./files\03\excel03.xlsx
#./files\03\test03.txt
このコードは、指定したフォルダ内のすべてのサブフォルダにあるファイル名も含めて出力します。os.walk()は、root(現在のフォルダ)、dirs(フォルダ内のサブディレクトリ)、files(フォルダ内のファイル)の3つを返します。これを利用することで、どのフォルダにあるファイルかも把握できます。
これですべてのファイルのパスが取得できるので、すべてのファイルに同じ操作をするみたいな便利ツールが簡単に作れるね!
ファイルの拡張子を指定して取得する
特定の種類のファイル(例:画像ファイルやテキストファイル)のみを取得したい場合、ファイルの拡張子を確認してフィルタリングすることが可能です。例えば、拡張子が.txt
のファイルのみを取得したい場合は、以下のようにします。
import os
# ファイル名を取得したいフォルダのパスを指定
folder_path = "./files"
# 指定したフォルダ内のファイルとフォルダ名をリストとして取得
files = os.listdir(folder_path)
# フォルダ内のすべてのファイルを再帰的に取得
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".txt"):
print(file)
## 出力
#test.txt
#test01.txt
#test02.txt
#test03.txt
endswith()を使って判定してあげれば大丈夫だね!
まとめ
Pythonを使ったファイル名の取得方法には、さまざまな方法があります。osモジュールを使った基本的な方法から、再帰的にファイルを取得する方法、さらにはpathlibを使ったより直感的な方法まで紹介しました。これらのテクニックを組み合わせることで、複雑なファイル操作も簡単に行うことができます。
ぜひ、この記事を参考にして、Pythonでのファイル操作に挑戦してみてください!
コメント