2017-04-12 150 views
0

我試圖刪除文件夾使用第二個答案從this question。我的文件夾包含子文件夾的一些,其中包含的Thumbs.db。所以,我得到錯誤:如何刪除的Thumbs.db使用Python?

PermissionError:[WinError 32],因爲該文件被其他進程佔用該進程無法訪問該文件:C:/foto/my_foto/Thumbs.db'

當我嘗試刪除C:/foto/my_foto/Thumbs.db。

如何刪除這個文件?

+0

如果運行在命令行,打開命令提示符「以管理員身份運行」 python腳本,如果蟒蛇是從任何IDE中運行,運行IDE作爲管理員和運行你的腳本。 – Haranadh

+0

我運行命令行管理員並具有同樣的錯誤。 =( –

回答

2

同爲其他語言 - c#c++java - 因爲它是特定的OS,而不是語言。

有幾個選項中,只有最後一個是沒有討厭的副作用:

總之,正確的方法是製作一部在你的方式程序停止這樣做。或者,如果該程序具有合法的理由繼續鎖定的文件存在,重新審視自己的目錄使用模式。

+0

方案2有太多的陷阱,即使它適用於當前的問題,它可能會導致數據損壞,如果程序打開一個可重用的封閉句柄值這將是更好的殺了該程序的另一個文件 - ..優雅地如果可能的話。 – eryksun

+0

@eryksun殺死一個隨機過程無關,從做其工作,同時完全關閉手柄只(大概)殺死一個不合活動停止了。如果是這樣的,比如'explorer'一個過程,殺人是不是一種選擇,在所有。關閉處理是一個普遍建議的方式(也有像解鎖程序專門爲此寫的),所以我不得不提到它 - 以及它的缺點 –

+1

我upvoted的選項1和3,和我提到殺死一個更好的(不好。 )解決方案比試圖關閉句柄。程序可以被硬化處理被殺害,他們甚至有可能通過'WM_CLOSE'或'WM_QUIT'正常關機。即使一個控制檯應用程序可以被關閉優雅LY如果它有一個控制處理器,但只有當它是附加到控制檯的唯一進程。然而,在偷偷關閉句柄是不是一個程序應該合理地期望,當手柄值被重複使用,這是完全的封閉誰就把手故障可導致數據損壞。 – eryksun