如果我不将文件分配给变量,文件会自动关闭吗?

tem*_*ame 4 python file-io scope

可能重复:
在Python文件对象上使用迭代器时需要close()

for line in open("processes.txt").readlines():
    doSomethingWith(line)
Run Code Online (Sandbox Code Playgroud)

以该代码为例.没有什么可以调用close().它会自动关闭吗?

Mic*_*ber 7

取消分配相应对象时,文件将关闭.你给出的样本取决于那个; 没有对象的引用,因此将删除该对象并关闭该文件.

需要注意的重要一点是,没有保证何时删除对象.使用CPython,您可以将引用计数作为内存管理的基础,因此您可以期望文件立即关闭.在Jython中,垃圾收集器不保证在任何特定时间(甚至根本不运行)运行,因此您不应指望文件被关闭,而应该手动关闭文件或(更好)使用with语句.


Sna*_*fee 5

AFAIK他们没有.要进行自动关闭,您需要使用上下文管理器,例如with

尽管可以通过垃圾收集和关闭来回收对象本身,但是没有确定的时间来进行垃圾收集.

with open("processes.txt") as openfile:
    <do stuff>
Run Code Online (Sandbox Code Playgroud)