Python文件在程序退出时关闭
如果我想关闭具有无限循环的程序中的文件,我可以执行以下操作:Python文件在程序退出时关闭,python,file,keyboardinterrupt,Python,File,Keyboardinterrupt,如果我想关闭具有无限循环的程序中的文件,我可以执行以下操作: file = open('abc', 'w') while True: try: file.write('a\n') except KeyboardInterrupt: break file.close() 但如果我就这样离开它: file = open('abc', 'w') while True: file.write('a\n') 退出时文件不会关闭吗?Pytho
file = open('abc', 'w')
while True:
try:
file.write('a\n')
except KeyboardInterrupt:
break
file.close()
但如果我就这样离开它:
file = open('abc', 'w')
while True:
file.write('a\n')
退出时文件不会关闭吗?Python已经关闭了。垃圾收集是自动清除内存中未使用的文件句柄或数据。当python程序停止时,如果它完全停止,它将释放关闭时使用的内存和文件句柄。在编写长时间运行的程序或访问大量信息或文件的程序时,熟悉垃圾收集的工作原理是明智的。垃圾收集是自动清除内存中未使用的文件句柄或数据。当python程序停止时,如果它完全停止,它将释放关闭时使用的内存和文件句柄。在编写长时间运行或访问大量信息或文件的程序时,最好熟悉垃圾收集的工作原理。正如@Mitch Jackson前面提到的,如果python程序完全停止,它将释放内存。在您的情况下,因为您只是在while循环中打开一个文件。程序停止时将无法关闭已打开的文件,除非您明确包含异常处理,如
try catch block
或将其打包的with
语句
下面是关于
的文档,其中包含语句:正如@Mitch Jackson所提到的,如果python程序完全停止,它将释放内存。在您的情况下,因为您只是在while循环中打开一个文件。程序停止时将无法关闭已打开的文件,除非您明确包含异常处理,如try catch block
或将其打包的with
语句
下面是关于和语句的文档:程序退出时关闭的文件可能重复的可能重复与垃圾收集无关。我想这取决于“关闭”的含义。如果python程序已退出,无论是从中断还是从正常结束,它将释放所有打开的文件句柄。在我更熟悉的perl中,如果已打开文件的函数退出,垃圾收集器确定文件句柄没有更多引用,文件句柄将被释放,文件将被“关闭”。如果您担心文件锁定,这是非常有条件的。与程序示例无关。另外,当程序退出时关闭的文件与垃圾收集无关。我想这取决于你所说的“关闭”的意思。如果python程序已退出,无论是从中断还是从正常结束,它都将释放其打开的所有文件句柄。在我更熟悉的perl中,如果已打开文件的函数退出,垃圾收集器确定文件句柄没有更多引用,文件句柄将被释放,文件将被“关闭”。如果您担心文件锁定,这是非常有条件的。与程序示例无关。也与同一问题无关