2009-12-06 381 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。这是一个令人讨厌的解决方案。

相关问题