2011-09-10 13 views
3

私はすべてのファイルのメタデータを読み込んで、そのファイルを必要なフォルダに置くMusicファイルオーガナイザ(python2)をビルドしています。ディレクトリ内のファイルの総数を見つける効果的な方法

私はすでにコマンドラインインターフェイスが用意されていますが、このスクリプトでは「現在どのファイルが動作していますか?」というようなフィードバックが表示されます。

ディレクトリに5000個のmp3ファイルが含まれている場合は、何らかのフィードバックが必要です。

だから、私は(あまりにもすべて 、後続のディレクトリに再帰的にスキャンする)ディレクトリで利用可能なMP3ファイルの合計 数を見つけるための最も効率的な方法を知っていただきたいと思います。

私の考えは、処理されたファイルの合計を追跡し、それに応じて進行状況バーを表示することです。より良い方法(パフォーマンスが賢明)はありますか、お気軽にご案内ください。

私のアプリには、プラットフォームに依存しないコードはありません。このアイデアにこだわった重大なパフォーマンスのペナルティがある場合は、linuxのために提案してください。

+0

私のpythonスクリプトでは、私はすべてのファイルとプロセスを調べるためにos.walkを使用しています。 –

答えて

2

これは申し訳ありませんが、ファイルを再帰的に検索するよりも効率的に行う方法はありません(少なくともプラットフォーム(またはファイルシステム)に依存しません)。

もしファイルシステムがあなたを助けることができれば、助けになることは何もできません。

再帰的なスキャンをしなければできないのは、ファイルシステムの設計方法です。 ディレクトリはファイルとして見ることができ、そこに含まれるすべてのファイルのリストが含まれます。サブディレクトリで何かを見つけるには、最初にディレクトリを開いてからサブディレクトリを開き、それを検索する必要があります。

+1

これは、あなたがhttp://sprunge.us/VWAY?pythonについて話している唯一の方法ですか? –

+0

確かに、フィルタリングしてMP3ファイルであることを確認してはいけませんか? – nulvinge

+0

私は確かにそれを行います。私はちょうどスケルトンについて話していた。 –

1

@ shadyabhi:もし多くのサブディレクトリがあるなら、os.listdirとmultiprocessing.Processを使ってプロセスをスピードアップすることができます。

+0

各ディレクトリのファイル数は20を超えません。だから、私は4つのスレッドや何かを作って、それらがすべて調和していなければ、その価値はないと思う。 –

+0

@shadyabhi:非常に少数のファイルで、余分な作業に価値のあるサブプロセスやスレッディングはないと思うし、単なるスレッドより遅くなるかもしれない – PabloG

関連する問題