Python如何在打开后删除文件时读取文件

Mik*_*yer 6 python linux file readfile

我很难理解Python在被open编辑后删除文件时如何读取文件的概念.这是代码:

>>> import os
>>> os.system('cat foo.txt')
Hello world!
0
>>> f
<_io.TextIOWrapper name='foo.txt' mode='r' encoding='UTF-8'>
>>> os.system('rm -f foo.txt')
0
>>> os.system('cat foo.txt')
cat: foo.txt: No such file or directory
256
>>> f.read()
'Hello world!\n'
>>>
Run Code Online (Sandbox Code Playgroud)

文本和二进制模式给出相同的结果.

我也尝试过这个大小超过1Gb的大文件,删除后也会读取它们.open即使对于非常大的文件,操作也几乎瞬间发生.

如果打开的文件不再存在,Python从哪里获取数据?

我跑了这个测试

  • python 3.4.3 / 3.5.2
  • ubuntu 14.04 / 16.04

Jea*_*bre 6

与Python无关.在C,Fortran或Visual Cobol中,只要代码从open系统调用中获取句柄,就会有相同的行为.

在Linux/Unix系统上,一旦进程具有文件句柄,即使文件被删除,它也可以读取它.有关详细信息,请检查该问题(我不确定是否可以这样做,似乎是)

在Windows上,只要文件被进程锁定,您就无法删除该文件.