open('output1.txt','w').write("Hello guys")与openvar.write("Hello guys")

Ben*_*ey4 0 python variables file

当我做

open('output1.txt', 'w').write("Hello guys")
Run Code Online (Sandbox Code Playgroud)

立即创建一个名为output1.txt的文件,其中包含字符串"Hello guys".但是,当我这样做

openvar = open('output2.txt', 'w')
openvar.write("Hello guys")
Run Code Online (Sandbox Code Playgroud)

然后只创建文件output2.txt.只有在我这样做的时候才会在output2.txt上看到"Hello guys"这个文字openvar.close().为什么这种行为只是因为额外的变量赋值而有所不同?

Thi*_*ter 10

Python在第一种情况下检测到文件对象不再被引用,因此垃圾收集器将收集它并调用它的析构函数来关闭文件.

在第二种情况下,文件对象仍然存在,因此它不会自动关闭.


完成区域后,应始终关闭文件.该with声明使这很容易:

with open('output.txt', 'w') as f:
    f.write('Hello')
Run Code Online (Sandbox Code Playgroud)

一旦剩下该块,文件就会再次关闭 - 即使块内的代码引发异常.


如果由于某种原因需要保持文件打开(例如,因为您要编写更多数据),可以.flush()强制系统清空写缓冲区并实际将其写入文件.