2013-07-09 70 views
0

我想刪除一個文件夾,如果已經存在,有關如何刪除一個目錄的任何輸入,如果它存在嗎?是否有相當於「rm -rf」的python?有沒有與「rm -rf」相當的python?

如果os.path.isdir( './回購。 '): shutil.rmtree(' ./回購')

+0

這也許是:http://docs.python.org/2/library/shutil.html#shutil.rmtree,或這樣的:http://stackoverflow.com/q/185936/65387 – mpen

+1

當然,只是讓Python執行shell命令。你可以使用'os.system(「rm -rf」)',或者你可以使用['subprocess'](http://docs.python.org/2/library/subprocess.html)模塊。 – 2rs2ts

+1

@jdero投票結束。 – mpen

回答

5

您可以使用shutil.rmtree

shutil.rmtree(路徑[,ignore_errors [,onerror]])

刪除整個 目錄樹;路徑必須指向一個目錄(但不是符號鏈接到目錄的 )。如果ignore_errors爲true,那麼由 失敗產生的錯誤將被忽略;如果爲false或省略,則通過調用由onerror指定的處理程序來處理此類錯誤 ,或者如果省略了 ,則會引發異常。

如果提供了錯誤,它必須是可接受的,它接受三個 參數:函數,路徑和excinfo。第一個參數 函數是引發異常的函數;它將會是 os.path.islink(),os.listdir(),os.remove()或os.rmdir()。第二個參數 path將作爲傳遞給函數的路徑名。第三個 參數excinfo將是由 sys.exc_info()返回的異常信息。錯誤引發的異常不會被捕獲。

在版本2.6中更改:顯式檢查路徑是符號鏈接並在此情況下引發OSError。

+1

我發佈這是一個騙局,然後你發佈這個,但你得到60點和我得到一個有用的標誌......有趣的點系統在這裏:P,考慮到這是我的鏈接線程的選定答案的近直接副本。 – jdero

+0

@jdero:這個問題只有一個簡單的答案,所以我不知道該怎麼看。 – Blender

+0

哎唷,我保存了非常錯誤的答案。爲了記錄,直到我發佈這條消息之前,我沒有點擊進入。除了鏈接,現在只有答案是不鼓勵的。 –