【发布时间】:2009-12-06 21:42:43
【问题描述】:
我在读取文件后尝试删除文件,但收到“WindowsError: [Error 32] The process cannot access the file because it is being used by another process”
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: 我是一个白痴。 我在对象的初始化中打开文件 当我通过将“删除”移动到脚本顶部进行测试时,我应该把它放在顶部,而不是在创建我的对象之后
抱歉耽误了你的时间,我整个周末都在做一些明天到期的事情,当它无法运行时我很恐慌
【问题讨论】:
-
抓取进程资源管理器或类似的东西,并尝试查看实际打开文件的内容。
-
如果您在打开文件之前尝试将其删除,是否可行?
-
filePath 是目录吗?
-
filePath 是一个文本文件。我写的很好,就是删不掉
-
硬编码文件路径在最好的时候并不是一个好主意。更糟糕的是:在反斜杠过载(路径分隔符和转义字符)的 Windows 上需要非常小心。
os.remove("c:\file\file.txt")应该是os.remove(r"c:\file\file.txt")或os.remove("c:\\file\\file.txt")或os.remove("c:/file/file.txt")
标签: python