4

では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 名) をうまく処理できません。

4

1 に答える 1

3

Python 3.5+ を使用している場合は、os.scandir() を使用できます。scandir のドキュメントを参照してください

于 2016-03-12T02:23:23.287 に答える