0

我在理解 Python 调试器中奇怪的文件锁定行为时遇到了问题。

我有一个 2TB 的图像文件,我的脚本会读取它。一切都很完美,直到我想用不同的十六进制编辑器读取同一个文件。如果在我开始我的脚本之前在十六进制编辑器中打开文件,一切都很好。如果我在脚本在断点处暂停期间尝试打开文件,我的系统几乎挂起并且变得非常慢。我通常可以从终端杀死 Pyhon 和十六进制编辑器,但它非常慢,最多需要 10 分钟。

在我停止脚本甚至广泛杀死所有 Python 实例之后,同样的问题出现了。此映像所在的磁盘保持锁定状态,无法卸载它(仅使用 diskutil force 命令),如果我尝试在其他任何地方打开文件,系统将挂起。

我也不能一个接一个地启动脚本,下一个脚本只是停止工作并挂起我的系统。

我必须等待最多 10 分钟才能再次使用该文件。

我试图找到使用“sudo lsof +D”命令锁定文件的进程,但它没有列出任何内容。

以下是更多细节: — 我的系统是 Mac Os X 10.9。Python是3.4。我使用 Eclipse 和 Pydev 来开发脚本。— 我使用 open('image.dmg', mode='rb') 命令在 python 中打开文件并使用 close() 关闭它。— 该文件是外部 ExFat 格式化驱动器上的 2TB 磁盘映像。其他文件没有这样的问题。文件在 Finder 设置中被写保护。

谁能指导我正确的方向来找到这个问题的根源?

4

1 回答 1

0

我从未使用过 Mac OS,但我可以想象:

  • 也许 Python 会在打开文件时锁定文件,并且如果您之后尝试打开它,则十六进制编辑器会失败。
  • 系统挂起并且变慢(即使在杀死所有进程之后)->我认为这是某种缓存,它会填满您的内存,直到您的计算机开始使用硬盘作为内存(并且变得非常慢)

我认为您应该尝试找出如何在 Mac OS 上使用 python 打开文件(如果有某种锁),并且您应该注意这个大文件永远不会完整地存储在内存中(有不同的方法可以读取大块中的文件)。

问候奎师

PS:我为我的英语道歉。这不是我的母语。

于 2014-06-02T09:11:33.200 回答