私は大規模なハードディスク上のpythonでファイルルックアップを使いこなしています。私はos.walkとglobを見てきました。私は通常、os.walkを使っています。私はそれをもっとうまく見つけて、通常のサイズのディレクトリの方が速いようです。os.walkまたはglobにすばやく
どちらも誰も経験したことがあり、どちらが効率的であると言えるでしょうか?私が言うように、グロブは遅くなるようですが、ワイルドカードなどを使用することができます。散歩と同じように、結果をフィルタリングする必要があります。コアダンプを参照する例を次に示します。
core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
for file in files:
if core.search(file):
path = os.path.join(root,file)
print "Deleting: " + path
os.remove(path)
それとも
for file in iglob("/path/to/dir/core.*")
print "Deleting: " + file
os.remove(file)
は、私には時期尚早の最適化のような音。ソース(http://hg.python.org/cpython/file/d01208ba482f/Lib/glob.pyおよびhttp://hg.python.org/cpython/file/d01208ba482f/Lib/os.py)を見てみました。両方の関数が 'os.listdir'と' os.isdir'に依存しているのを見てください。 (しかし、以下の2つの答えで指摘されているように、 'os.walk'はサブディレクトリを再帰し、' glob.iglob'はそうしないので、比較するのは意味がありません)。パフォーマンス上の問題が発生した場合は、いくつかのアプローチを紹介してください。それ以外の場合は、明確なコードを書いてください。 –