Python无法删除文件,提示“被另一个进程使用”

14 投票
4 回答
23947 浏览
提问于 2025-04-15 16:44

我在尝试读取一个文件后删除它,但遇到了“WindowsError: [Error 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\file.txt") 却又出现了WindowsError: [Error 32] 该进程无法访问文件,因为它正被另一个进程使用: 'c:\file\file.txt'。然后我在Windows资源管理器里查看,发现文件又回来了,还是空的。我可以在资源管理器里删除它,但当我运行脚本去删除时,它又报错(并且创建了一个空文件)。你觉得这可能是什么情况?

更新 3: 我真是个傻瓜。 我在一个对象的初始化过程中打开了文件。 当我测试把“删除”放到脚本顶部时,我应该把它放在最上面,而不是在创建对象之后。

抱歉浪费了你的时间,我整个周末都在忙这个,明天就要交,结果它不运行我有点慌了。

4 个回答

2

我现在也遇到同样的问题,跟access-AB有关。Process Explorer(一个查看进程的工具)显示‘python.exe’正在使用我想删除的文件。我无法结束这个Python进程,这真让人烦。

6

可以使用 Unlocker(更简单)或者 Process Explorer 来查看哪个程序正在使用这个文件。

(这是 Anon 提出的建议)

10

还有一种可能性是,病毒检查软件在你尝试删除或重命名文件时,仍然打开着这个文件。这种情况并不常见,但一旦发生,就会让人很烦恼,难以找到原因。

撰写回答