是否需要关闭文件才能用python编写?

是否需要关闭文件才能用python编写?,python,file,Python,File,如果没有最后的结束语句,test1.txt文件将为空 fileN = open("test1.txt", 'w') print('255 255 255', file = fileN) #fileN.close() 但是,如果我在函数中编写代码,然后调用它,即使不关闭语句,文件也会成功编写 fileN = open("test1.txt", 'w') print('255 255 255', file = fileN) #fileN.close() 所以我有两个问题: 写入文件是否必须关闭?

如果没有最后的结束语句,test1.txt文件将为空

fileN = open("test1.txt", 'w')
print('255 255 255', file = fileN)
#fileN.close()
但是,如果我在函数中编写代码,然后调用它,即使不关闭语句,文件也会成功编写

fileN = open("test1.txt", 'w')
print('255 255 255', file = fileN)
#fileN.close()
所以我有两个问题: 写入文件是否必须关闭?
python会在函数结束时自动关闭文件吗?

通常,函数结束时文件会关闭。在某些情况下,这是不正确的,但在其他情况下,您不需要太担心它。

如果您在写入文件后不记得关闭该文件,请使用此选项

def foo():
    fileN = open("test2.txt", 'w')
    print('255 255 255', file = fileN)
    #fileN.close()

foo()
当您与open一起使用时,Python将在执行结束时自动为您关闭该文件

即使您不调用file.close,Python也会关闭该文件,但所需的时间是不可预测的,它会降低程序的速度。在python最终关闭文件之前,不会应用对打开的文件所做的编辑

如果希望数据在写入后立即显示在实际文件中,可以执行file.flush。否则,它将在file.close期间自动执行


希望这能解决您的问题,请接受。

Python不会。但是,CPython实现使用引用计数,您的文件将通过此自动内存管理进行回收,在这种情况下,将调用file.\uu del\uu,这将调用file.close。然而,你不应该依赖这个。处理文件的惯用方法是使用上下文管理器、with语句,如果不是,则应该明确地关闭文件。这是否回答了您的问题?Python教程的第二部分也将为您回答这些问题。我认为最佳实践是使用open写入文件。顺便说一句,如果使用open,则需要关闭文件。如果您自己不关闭它们,Python最终会为您关闭它们。谢谢您的解释!但我仍然想知道,当代码被放入函数中时,为什么会成功地编写文件。@根据我的理解,它最终会被编写,只是你不知道什么时候。它可以是几秒钟,几分钟,甚至几小时。