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