2011-08-04 46 views
4

我試圖刪除在目錄中找到的所有文件。 Delete Folder Contents in Python的接受答案建議獲取所有文件的列表並在循環中調用「取消鏈接」。刪除python中的大量文件

假設我在網絡共享上有數千個文件,並且希望儘可能縮短目錄的時間。

使用諸如rm -f /path/*之類的shell命令或使用shutils.rmtree或其他類似的命令刪除它們全部效率更高嗎?

+3

如果你將目錄移動到一個新的名字(deleteme是好的),那麼mkdir一個新的名字,你可以在空閒的時候在後臺刪除舊的名字。 – nmichaels

+0

@nmichaels有趣。那麼簡單地把它移動到/ dev/null呢? – Dave

+0

這不會比刪除更快;在同一個文件系統上使用'os.rename'移動是非常快的。 – agf

回答

5

如果您確實要刪除整個目錄樹,shutils.rmtree應該比os.remove(與os.unlink相同)更快。它也允許你指定一個回調函數來處理錯誤。

@nmichaels在評論中的建議也不錯,你可以os.rename該目錄然後在它的位置創建一個新的目錄,並在原來的重命名目錄上使用shutils.rmtree

+0

問題是關於比較python(rmtree是我認爲最好的)到unix shell(rm -Rf )。 – orzel

+0

@orzel這就是他所說的,但我認爲他真正的意思是如何快速做到這一點,這是'rmtree'所做的。他接受了我的回答,所以我們必須假設我已經解決了他的意圖。 – agf

+0

可能。我對原始問題感興趣:哪一個更快,python/rmtree還是分支'rm -Rf'?我正在尋找有關這方面的測試/數據和爭論。 – orzel