当我在 IPython3 shell 中使用这段代码时
>>>data = open('file').read()
然后检查打开的文件描述符:
lsof | grep file
我发现空列表
当我使用这个时:
>>>open('file')
lsof
显示两个项目。问题是为什么第一个操作关闭 fd 而第二个没有?我认为垃圾收集器必须删除没有引用的文件对象。
当我重新分配值时,我知道解释器中的 '_' var
>>>111
>>>_
111
但描述符保持打开状态。当我重复
>>>open('file')
n 次有 2 * n 个打开的描述符