最近この質問os.walk
をしたところ、コマンドに関する素晴らしい回答が得られました。私のスクリプトはこれを使用して、を使用して特定のフォルダーをドライブ全体から検索しますfor root, dirs, files in os.walk(drive):
。残念ながら、600 GB ドライブでは、これには約 10 分かかります。
これを呼び出すより良い方法、または使用するより効率的なコマンドはありますか? ありがとう!
最近この質問os.walk
をしたところ、コマンドに関する素晴らしい回答が得られました。私のスクリプトはこれを使用して、を使用して特定のフォルダーをドライブ全体から検索しますfor root, dirs, files in os.walk(drive):
。残念ながら、600 GB ドライブでは、これには約 10 分かかります。
これを呼び出すより良い方法、または使用するより効率的なコマンドはありますか? ありがとう!
小さな継続的な改善を探しているだけなら、os.walk
ほとんどのプラットフォームよりも優れた方法があります。
特に、情報が(Windows)または(ほとんどの* nixシステム)下位レベルのAPIからすでに利用可能であるにもかかわらず、ディレクトリではないことを確認するためだけに多くの通常のファイルが必要になりますwalk
。stat
残念ながら、その情報は Python レベルでは利用できません…しかしctypes
、C 拡張ライブラリを介して、または構築するか、またはscandir
.
これにより、プラットフォームとディレクトリ レイアウトの詳細に応じて、時間が 10% から 90% 程度短縮される可能性があります。ただし、システム上のすべてのディレクトリをチェックする必要がある直線的な検索になることには変わりありません。それよりもうまくやる唯一の方法は、ある種のインデックスにアクセスすることです。プラットフォームにはそのようなインデックスがある場合があります (Windows デスクトップ サーチやスポットライトなど)。あなたのファイルシステムも同様かもしれません (ただし、それには低レベルの呼び出しが必要であり、ルート/管理者アクセスが必要になる場合があります)、または独自に構築することもできます。
scandir.walk(path)
よりも 2 ~ 20 倍高速な結果が得られますos.walk(path)
。pip install scandir
ここでこのモジュールを使用できますscandirのドキュメントです