我正在構建一個相對簡單的應用程序,要求查找目錄,檢查它們是否正確,然後刪除其中一個並使用另一個的內容重新創建目錄。我遇到這種怪異的行爲,我會盡力解釋:任何人都可以解釋shutil.rmtree和shutil.copytree這個奇怪的行爲嗎?
當我已經得到了目標文件夾窗口打開,它是空的,有一個拒絕訪問異常,然後我被踢出的文件夾,它被刪除。但是,如果它不是空的,它就會正常工作,沒有例外,目標目錄(從看起來看起來)被清空,然後從源目錄中填充文件。這很奇怪,因爲它應該直接刪除目標文件夾,然後使用源目標中相同的名稱和內容重新創建目標文件夾。
這沒有意義對我來說,不應該有,當我瀏覽目錄時,它不是空的,因爲當它是空的完全相同的例外呢?有什麼區別,它仍然應該只是刪除文件夾。有什麼合理的解釋嗎?另外,如果出現異常,爲什麼該目錄會被刪除呢?
代碼這個特殊的部分是相當簡單的(請記住我是一個初學者:))
def Delete(self, dest):
try:
shutil.rmtree(dest)
self.Paste(self.src, dest)
except (IOError, os.error) as e:
print e
def Paste(self, src, dest):
try:
shutil.copytree(src, dest)
except (IOError, os.error) as e:
print e
您是否從Delete()或Paste()中獲取了拒絕訪問異常?很難判斷'try'塊中有多個語句。最好將整個回溯加入你的問題。一定要將它縮進4個空格,以便它可讀。 – martineau