【问题标题】:Python: Can't save file/Windows Error 32Python:无法保存文件/Windows 错误 32
【发布时间】:2015-05-12 06:00:25
【问题描述】:

我写了一个函数,当我的程序完成它的工作时调用它。

def allDone(self, event):
    dlg = wx.MessageBox("All done!", "Ask Alfred", wx.OK | wx.ICON_INFORMATION)
    os.unlink(self.fpath)
    os.rename(self.temp, self.fpath)
    self.pathBox.Clear()

但是,它没有按预期工作。它应该删除原始文件,然后将临时文件重命名为原始文件路径。

相反,它只执行取消链接,删除 self.fpath 中的文件。

我得到的确切错误是:

File "G:/AskNorbert/finder.py", line 151, in allDone
os.rename(self.temp, self.fpath)
WindowsError: [Error 32] The process cannot access the file because it is being used by another process

【问题讨论】:

  • 检查你的程序中是否没有关闭临时文件

标签: python operating-system wxpython


【解决方案1】:

在尝试重命名临时文件之前,请确保确保您已在临时文件上调用了flush(),然后调用了close(),以确保您没有锁定它。

close 之后和rename 之前调用time.sleep(0.2) 也是值得的,让操作系统有时间完成它正在做的任何事情。

【讨论】:

  • 当我尝试 os.close 时出现此错误:os.close(self.temp) TypeError: an integer is required
  • 文件不应“打开”。它只能通过 xlutils 函数访问...它不是通过 excel 打开...
  • 如果您一直在阅读它并且仍然拥有文件句柄,那么它很可能仍然处于打开状态。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
相关资源
最近更新 更多