2011-02-04 4 views
1

ここで私はinterwebsとSOを読んでいるので、os.walkはディレクトリ内のすべてのサブディレクトリとファイルを見つけるための最良の方法です私が持っている質問は、の場合サブディレクトリのすべてを再帰的に検索したい場合は、最速のソリューションはos.walkですか?os.walkのより速い代替方法/使用法は、Pythonのすべてのサブディレクトリを見つけるだけです

さらに、私の質問は、os.walkへの呼び出しにはfor root, dirs, files in os.walk(path)が含まれているので、os.walkは実際にそれを呼び出す必要がない場合はすべてのファイルを実際に見ますか?

for root, dirs, files in os.walk(path): 
    for x in dirs: 
     DoStuffHere 

しかし、それは確かに多くの多くのサブディレクトリとファイルのフォルダに遅いようだ:

現在、私のコードです。

ありがとうございました。

答えて

2

私はこれのすべての側面ではなく、私の理解から、特定のための100%ではないよ:

一般的には、ファイルのリストがすでにディレクトリのメタデータに含まれているディレクトリを検索ときにデータが既にあります(Linux、試し窓は分かりません)。つまり、これはos.walkがおそらくこれを行う最も簡単な方法です。

また、プロファイリングを行わないと、os.walkが実際にスローダウンする場所がわかりますか?一般的なアドバイスは、アプリケーション/プロジェクトをコード化し、遅すぎるとプロファイリングを開始して遅い部分を見つけて再因子化することです。

os.walkで私はosにできるあなたの必要性のためにおそらく十分速くなるように、数千のディレクトリ+ 70,000のファイルをおよそ2秒以内に見ます。

+0

ネットワーク速度の単純な問題であるように見えます。私が歩こうとしているドライブは、ネットワーク上にあります。ローカルディレクトリで試してみましたが、はるかに高速でした。 – Cryptite

+0

@Cryptiteああ、ネットワークアクセスは遅い方に向かいます。 – Pharaun

関連する問題