Pythonのyieldとは?
Pythonの yield
は、ジェネレータ関数を定義する際に使用されるキーワードです。ジェネレータ関数は、イテレータを返す特殊な関数。対して通常の関数は、呼び出されると処理を実行し、結果を返すと終了します。
yield
キーワードを使用することで、ジェネレータ関数はイテレータを作成し、値を逐次的に生成します。
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
osモジュールとの組み合わせ
Pythonの os
モジュールは、オペレーティングシステムとのインタラクションを可能にする一連の関数を提供します。これには、ファイルやディレクトリの操作が含まれます。
os.walk()
関数は、指定したディレクトリを起点に、そのディレクトリ以下のすべてのディレクトリとファイルを探索します。この関数は、探索したディレクトリの名前、そのディレクトリに含まれるサブディレクトリの名前、そしてそのディレクトリに含まれるファイルの名前を返します。
yield
を使って os.walk()
の結果を一つずつ返すことで、大量のファイルやディレクトリを効率的に処理することができます。
import os
def find_all_files(directory):
for root, dirs, files in os.walk(directory):
yield root
for file in files:
yield os.path.join(root, file)
このように、Pythonの yield
と os
モジュールを組み合わせることで、大規模なデータを効率的に処理することが可能になります。.