当我们在写入文件时删除文件时会发生什么?

时间:2018-12-14 18:19:03

标签: linux python-3.x

我创建了一个空文件,如下所示:

touch foo.txt

然后,我打开了一个Python交互式会话,并输入了以下内容:

>>> f = open("foo.txt", "w")
>>> print("Hello", file=f)

这时,在另一个终端中,我键入了以下内容:

rm foo.txt

现在,回到Python交互式会话中,我输入:

>>> print("World", file=f)

这没有给出错误。为什么不?此时的文件已被删除。那它仍然如何工作?

然后,我在同一Python交互式会话中尝试了以下操作:

>>> f.close()
>>> f = open("foo.txt")

现在,以上两个语句中的第二个给出了错误,提示“没有此类文件或目录'foo.txt'”。为什么现在出现错误?如果在执行rm命令后文件仍然存在,为什么尝试打开文件失败?

1 个答案:

答案 0 :(得分:1)

打开文件时,该文件会加载到open file table中 此表存在于计算机内存(RAM)中,之后,对该文件所做的所有修改仅保存到该表中加载的同一文件中,而不是磁盘上的那个文件中,即使您从磁盘中删除该文件后,该文件仍然存在在打开的文件表中。希望这可以使图片更清晰。