我很难理解 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'
>>>
文本和二进制模式给出相同的结果。
我也尝试过对大小超过 1Gb 的大文件进行此操作,并且它们在删除后也会被读取。的运作open
即使对于非常大的文件,也几乎立即发生。
如果打开的文件不再存在,Python 从哪里获取数据?
我运行了这个测试
python 3.4.3 / 3.5.2
ubuntu 14.04 / 16.04
与Python无关。在 C、Fortran 或 Visual Cobol 中,只要代码从以下位置获取其句柄,您就会有相同的行为open
系统调用。
在 Linux/Unix 系统上,一旦进程拥有文件句柄,它就可以读取该文件,即使该文件已被删除。欲了解更多详情,请检查那个问题 https://stackoverflow.com/questions/2028874/what-happens-to-an-open-file-handler-on-linux-if-the-pointed-file-gets-moved-de(我不确定这样做是否可以,但似乎可以)
在 Windows 上,只要文件被进程锁定,您就无法删除该文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)