我已閱讀關於此功能的文檔,但是,我不認爲我正確理解這一點,如果有人可以告訴我什麼是我的想法錯誤,或者如果我是正確的,那將是一個很大的幫助。這裏是我的理解:shutil.rmtree()澄清
使用shutil.rmtree(path)
函數,它只會刪除指定的目錄,而不是整個路徑。 IE:
shutil.rmtree('user/tester/noob')
使用此,它只會刪除 '小白' 目錄是否正確?不是完整的路徑?
我已閱讀關於此功能的文檔,但是,我不認爲我正確理解這一點,如果有人可以告訴我什麼是我的想法錯誤,或者如果我是正確的,那將是一個很大的幫助。這裏是我的理解:shutil.rmtree()澄清
使用shutil.rmtree(path)
函數,它只會刪除指定的目錄,而不是整個路徑。 IE:
shutil.rmtree('user/tester/noob')
使用此,它只會刪除 '小白' 目錄是否正確?不是完整的路徑?
如果noob是一個目錄,shutil.rmtree()
函數將刪除noob
及其下的所有文件和子目錄。即,noob
是要刪除的樹的根。
這絕對只會刪除指定路徑中的最後一個目錄。 只是嘗試一下:
mkdir -p foo/bar
python
import shutil
shutil.rmtree('foo/bar')
...只會刪除'bar'
。
這裏有一些誤解。
想象一下,一個樹是這樣的:
- user
- tester
- noob
- developer
- guru
如果你想刪除user
,只是做shutil.rmtree('user')
。這也將刪除user/tester
和user/tester/noob
,因爲它們在user
之內。但是,它也會刪除user/developer
和user/developer/guru
,因爲它們也在user
之內。
如果rmtree('user/tester/noob')
會刪除user
和tester
,你的意思是,如果user
不在了user/developer
會存在嗎?
還是你的意思是說像http://docs.python.org/2/library/os.html#os.removedirs?
它試圖刪除每個被刪除的目錄的父目錄,直到它失敗,因爲該目錄不是空的。因此,在我的示例樹中,os.removedirs('user/tester/noob')
將首先刪除noob
,然後它會嘗試刪除tester
,這是可以的,因爲它是空的,但它會在user
處停止,並且保持原狀,因爲它包含我們不想刪除的developer
。
你是指「不是完整的路徑」是什麼意思?如果它會「刪除完整的路徑」會發生什麼? –
「user/tester/noob''中的完整路徑。 IE刪除包含測試儀和菜單的用戶目錄。 –
@IT忍者:測試結果是什麼? - 步驟1 – user1801810