2011-12-22 10 views
0

は、これは私が何をすべきかですが、永遠に取る:できるだけ早く完全なディレクトリツリーを削除するには? Pythonの

>>> import shutil,os 
>>> for d in os.listdir("."): 
...  if os.path.isdir(d): 
...   shutil.rmtree(d) 

ディレクトリは、数千のファイルの順序でファイルに満ちています。

これを行う最速の方法は何ですか?

+0

これはOSによって制限されており、shutilrmtreeはできるだけ速いです。 rmtreeのネイティブOSコールを呼び出すほうが速いかもしれません。どのようなシステムを使用していますか?私たちはctypes呼び出しを呼び出すことができ、その高速化をチェックします。 – jsbueno

答えて

5

残念ながら、それはFSの速度制限です。ディレクトリに多数のファイルがいっぱいになると、それをスピードアップする実際の方法はありません。

+0

しかし、どのようにディレクトリにファイルが格納されていますか?それらはすべて連続したメモリブロックに入っていますか?私は多分彼らが単一の巨大なファイルの上にあったかのようにすべてを削除する方法があると思っていた。私はちょうどファイルシステムに関する知識が不足しているかもしれません... – Danny

+3

私たちがUNIXファイルシステムについて話しているのであれば、各ファイルはinodeに関連付けられていて、ファイルを削除することは実質的に下層のinodeから切り離しています。そのプロセスには残念ながら時間がかかります。 iノード割り当てが連続することは保証されません。 – favoretti

関連する問題