关闭它后,python无法删除文件,“被另一个进程使用”

时间:2009-12-06 21:42:44

标签: python

我试图在读取文件后删除文件,但得到“WindowsError:[错误32]该进程无法访问该文件,因为它正被另一个进程使用”

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.txt的”) WindowsError:[错误32]进程无法访问该文件,因为它正由另一个进程使用:'c:\ file \ file.txt' 然后我查看Windows资源管理器,文件又回来了,空了。我可以在资源管理器中删除,然后当我运行脚本删除时,它会抛出错误(并创建空文件)。知道这里会发生什么吗?

更新3: 我是一个白痴。 我在对象的初始化中打开文件 当我通过将“删除”移动到脚本顶部来测试时,我应该把它放在顶部,而不是在创建我的对象之后

抱歉花了很多时间,我整个周末都在做一些明天到期的事情,但是当它不能运行时会感到恐慌

4 个答案:

答案 0 :(得分:9)

另一个可能性是您尝试删除或重命名时,病毒检查程序仍然打开该文件。这种情况不会经常发生,但一旦发生,追踪就会非常烦人。

答案 1 :(得分:6)

使用Unlocker(更简单)或Process Explorer查看该文件打开的程序。

(由Anon建议)

答案 2 :(得分:2)

我现在使用access-AB遇到同样的问题。 Process Explorer显示..'python.exe'正在使用我想删除的文件。我无法杀死Python。这是一个烦人的解决方案。

答案 3 :(得分:0)

有很多可能的原因。但是,最可能的一个是打开包含该文件的目录窗口,或者最近关闭了这样的窗口,而Windows尚未从其缓存中刷新目录。尝试关闭您正在查找的任何目录窗口,然后重试。