2009-12-06 385 views
13

我試圖從文件中讀取文件後刪除文件,但得到「WindowsError:[錯誤32]進程無法訪問該文件,因爲它正在被另一個進程使用「python無法在關閉它後刪除文件,「被另一個進程使用」

file = open(self.filePath) 
for line in file: 
     #do things 
file.close() 

os.remove(self.filePath) #throws error 

os.rename(self.filePath, self.filePath + "old") #throws same error 

任何想法??

謝謝!

更新: 我剛剛重新啓動我的(Windows 7)框,啓動eclipse,將os.remove(「c:\ file \ file.txt」)移動到我的腳本的第一行,運行並得到相同的錯誤。

更新2: 我用Windows資源管理器導航到文件..第一次我不能刪除它,它被「系統」使用。第二次嘗試刪除工作正常。該文件不再存在。現在當我運行 os.remove(「c:\ file \ file.txt」) WindowsError:[錯誤32]進程無法訪問該文件,因爲它正在被另一個進程使用:'c:\ file \ file。 TXT' 然後我看在Windows資源管理器和文件回來,空。我可以在資源管理器中刪除,然後當我運行腳本刪除時,它會拋出錯誤(並創建空文件)。任何想法可能會發生在這裏?

更新3: 我是一個白癡。 我是在一個對象 的初始化打開文件時我測試通過移動「刪除」腳本的頂部,我應該把它的頂部,沒有創造我的對象

對不起,把你的時間後, ,我一直在做所有周末的事情,明天到期,當它不能運行時會驚慌失措

+2

抓鬥進程資源管理器或類似的東西,並嘗試採取看看什麼是真正打開了該文件。 – 2009-12-06 21:44:48

+0

如果您在打開文件之前嘗試刪除文件,這是否正常工作? – 2009-12-06 21:45:00

+0

是filePath的一個目錄嗎? – wallyk 2009-12-06 21:49:53

回答

0

有很多可能的原因。但是,最有可能的是您打開的目錄窗口包含該文件,或者最近關閉了此類窗口,而Windows尚未從其緩存刷新該目錄。嘗試關閉您正在查找的任何目錄窗口,然後重試。

+0

您好..請參閱更新我的quesion。我剛剛重新啓動窗口,打開日食,移動操作系統。刪除線到腳本的頂部,運行並得到相同的錯誤。沒有打開瀏覽器在所有這個窗口會話 – alby 2009-12-06 22:18:24

8

另一個的可能性是當您嘗試刪除或重命名時,病毒檢查程序仍然打開該文件。這種情況不會經常發生,但當它發生時,追查真的很煩人。

+1

我也看過病毒檢查器搞砸這樣的代碼很多。我的建議是捕獲WindowsError,如果因爲文件正在使用而失敗,請稍等片刻,然後重試。 – 2009-12-06 22:33:39

6

使用Unlocker(更容易)或Process Explorer查看哪個程序打開了該文件。

(由Anon的建議)

+0

解鎖器非常感謝你 – alby 2009-12-06 22:40:05

+0

如果解決了這個問題,請考慮將此答案標記爲已接受的答案。 – 2012-03-25 03:42:05

2

我現在有同樣的問題與接入-AB。 Process Explorer顯示..'python.exe'正在使用我想要刪除的文件。我無法殺死Python。這是一個令人討厭的解決方案。

相關問題