打开('output1.txt','w')。写(“大家好”)和openvar.write文件(“大家好”)

2024-05-23 23:29:23 发布

您现在位置:Python中文网/ 问答频道 /正文

当我这么做的时候

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

一个名为output1.txt的文件被立即创建并包含字符串“Hello guys”。 但当我这么做的时候

openvar = open('output2.txt', 'w')
openvar.write("Hello guys")

然后只创建output2.txt文件。只有当我执行openvar.close()操作时,才会在output2.txt上看到文本“Hello guys”。 为什么这种行为的不同仅仅是因为一个额外的变量赋值?你知道吗


Tags: 文件字符串文本txthellocloseopenwrite
2条回答

Python检测到文件对象在第一种情况下不再被引用,所以垃圾收集器将收集它并调用它的析构函数来关闭文件。你知道吗

在第二种情况下,file对象仍然存在,因此它不会自动关闭。你知道吗


完成后,应始终关闭文件。with语句使这变得非常简单:

with open('output.txt', 'w') as f:
    f.write('Hello')

块一离开,文件就会再次关闭—即使块中的代码引发异常。你知道吗


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

在第一种情况下,垃圾收集器将为您关闭文件。没有对该文件的引用。在第二种情况下,您创建了对文件的引用。您必须手动关闭它,否则当引用被销毁时,它将被垃圾收集器关闭。你知道吗

相关问题 更多 >