文件被Python调试器锁定

时间:2014-06-02 05:37:40

标签: python debugging file-io lsof

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

我有一个2TB图像文件,我的脚本读取。一切都很完美,直到我想用不同的十六进制编辑器读取相同的文件。如果在我启动脚本之前在十六进制编辑器中打开文件,一切都很好。如果我在断点暂停脚本期间尝试打开文件,我的系统几乎挂起并变得非常慢。我通常可以从终端杀死Pyhon和hex编辑器,但速度非常慢,最多需要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设置中被写保护。

任何人都可以指导我找到这个问题的根源吗?

1 个答案:

答案 0 :(得分:0)

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

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

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

问候Kuishi

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