「Python でのファイル名とパスの操作」で説明したように、os モジュール内の関数はファイルを操作できます。再帰と os モジュールで提供される関数により、指定したディレクトリ内のすべてのファイル名を取得できます。
1 基本的な流れ
指定されたディレクトリ内のすべてのファイル名を再帰的に取得する基本プロセスを図 1 に示します。
図1 基本的なプロセス
2機能実装
2.1 関数を定義する
walk という関数を定義します。この関数には、指定された現在のディレクトリを示すパラメータ dirname があります。コードは次のとおりです。
def walk(dirname):
2.2 現在のディレクトリ内のすべてのサブフォルダー名とファイル名を取得してアクセスする
「Python におけるファイル名とパスの操作」で説明したように、os.listdir() 関数を使用すると、指定したディレクトリ内のすべてのサブフォルダー名とファイル名を取得できます。次のコード:
for name in os.listdir(dirname):
上記のコードは、os.listdir() 関数で取得したすべてのサブフォルダー名とファイル名に for ループを通じてアクセスし、変数名に保存します。
2.3 ファイルの絶対パスを取得する
for ループ内で、os.path.join() 関数を使用してファイルの絶対パスを取得します。コードは次のとおりです。
path = os.path.join(dirname, name)
このうち、os.path.join() 関数はフォルダー名とファイル名を結合するもので、パラメーター dirname は walk() 関数のパラメーターであるフォルダー名、パラメーター名は次のように取得したサブファイルです。 os.listdir() 関数のフォルダーまたはファイル名。最後に、取得した絶対パスを変数pathに格納します。
2.4 ファイルかどうかを判断する
for ループ内で、絶対パス path を取得した後の次のステップは、パスがファイルであるかどうかを判断することです。コードは次のとおりです。
if os.path.isfile(path):
print(path)
else:
walk(path)
上記のコードでは、パスがファイルの場合、ファイル名が出力されます。パスがファイルでない場合は、サブフォルダーであることを意味し、walk() 関数が再帰的に呼び出され、すべてのファイルが表示されます。パスサブフォルダー内の名前。
3 つの関数呼び出し
現在の Python ソース ファイルが配置されているディレクトリのすべてのファイル名を取得するには、次のコードを使用します。
cwd = os.getcwd()
walk(cwd)
このうち、os.getcwd()関数は、現在のPythonソースファイルが置かれているディレクトリを取得し、そのディレクトリをパラメータとしてwalk()関数に渡し、ディレクトリ内のファイル名をすべて取得します。
4 完全なコード
プログラムの完全なコードは次のとおりです。
import os
def walk(dirname):
for name in os.listdir(dirname):
path = os.path.join(dirname, name)
if os.path.isfile(path):
print(path)
else:
walk(path)
cwd = os.getcwd()
walk(cwd)