【发布时间】:2020-03-14 05:23:20
【问题描述】:
fileN = open("test1.txt", 'w')
print('255 255 255', file = fileN)
#fileN.close()
如果没有最后的结束语句,文件“test1.txt”将为空。
def foo():
fileN = open("test2.txt", 'w')
print('255 255 255', file = fileN)
#fileN.close()
foo()
但是,如果我在函数中编写代码然后调用它,即使没有关闭语句,文件也会成功写入。
所以我有两个问题: 是否必须关闭文件才能写入? 函数结束时python会自动关闭文件吗?
【问题讨论】:
-
"Python" 不会。但是,CPython 的实现使用引用计数,并且您的文件将被这种自动内存管理回收,在这种情况下,
file.__del__将被调用,它调用file.close。但是,你不应该依赖这个。使用文件的惯用方式是使用上下文管理器,with语句,如果没有,您绝对应该明确关闭文件。 -
Python教程的File IO portion也会为你解答这些问题。
-
我认为最好的做法是使用
with open()with open 写入文件。顺便说一句,如果您使用open(),您需要关闭该文件。 why-should-i-close-files。如果你不自己关闭它们,Python 最终会为你关闭它们。