ではos.listdir(some_dir)
、 からすべてのファイルを取得できますがsome_dir
、 の下に 2,000 万個のファイル (サブディレクトリなし) が存在する場合があり、some_dir
から 2,000 万個の文字列を返すのに長い時間がかかりますos.listdir()
。
(20M のファイルを 1 つのディレクトリの下に置くのは賢明な選択肢ではないと思いますが、実際にはそこにあり、私には制御できません...)
次のようなリスト操作を行うジェネレーターのような方法は他にありますか? ファイルを見つけたら、yield
それを取得してから次のファイルを取得します。
試してみos.walk()
ましたが、実際にはジェネレータースタイルのツールですがos.listdir()
、リスト操作を行うために呼び出しも行い、Unicode ファイル名 (GBK 名に加えて UTF-8 名) をうまく処理できません。