当模块异常停止时,关闭python模块中打开的所有文件

当模块异常停止时,关闭python模块中打开的所有文件,python,Python,在我的模块中,一个块的编码如下: # open a text file to which results obtained in MAINBLOCK will be written write2file = open('myResults.txt','w') # MAINBLOCK write2file.close() 运行模块时,我可能会在IDLE中通过Ctrl+C中断模块进行程序调试,或者在MAINBLOCK中引发异常,从而导致模块异常停止。但是,如果当时我试图在Windows资源管

在我的模块中,一个块的编码如下:

# open a text file to which results obtained in MAINBLOCK will be written
write2file = open('myResults.txt','w')
#    MAINBLOCK
write2file.close()
运行模块时,我可能会在
IDLE
中通过
Ctrl+C
中断模块进行程序调试,或者在
MAINBLOCK
中引发异常,从而导致模块异常停止。但是,如果当时我试图在Windows资源管理器中删除
myResults.txt
,则消息会显示:

The action can't be completed because the file is open in pythonw.exe
我想如果模块异常停止,文件仍在打开,对吗?如何在空闲状态下或通过其他方式关闭所有打开的文件标识符?

使用确保即使发生异常也关闭所有文件:

with open("myResults.txt", "w") as write2file:
    # do stuff
无需关闭文件-当您的程序退出
with
块时,它将自动关闭。

使用确保关闭所有文件,即使出现异常:

with open("myResults.txt", "w") as write2file:
    # do stuff

无需关闭文件-只要您的程序退出带有块的
,它就会自动关闭。

作为最后的手段,我相信文件总是可以从Python shell窗口中的提示关闭:-

文件名。关闭()


每当一个程序由于异常而中止执行时,这对我来说是有效的。但是,如果有一个关闭所有打开的文件的“catch all”close方法,它将非常有用。

作为最后的手段,我相信文件总是可以从Python shell窗口中的提示符处关闭:-

文件名。关闭()


每当一个程序由于异常而中止执行时,这对我来说是有效的。但是,如果有一个“全面关闭”方法关闭所有打开的文件,这将非常有用。

谢谢。我知道带
是一个更好的选择。但有时我会直接使用
write2file=open('myResults.txt','w')
来避免太多缩进级别。因此,如果程序无法访问
write2file.close()
,我仍然对如何解决打开文件的问题感兴趣。python中是否有一个模块可以关闭
IDLE
中所有打开的文件,如果您想引入更多的控制,您将无法绕过额外的缩进。另一种方法是将使用打开文件的代码包装在
try
块中,并在那里放置
except
子句以关闭文件,然后重新引发异常。但那要复杂得多。谢谢。我知道带
是一个更好的选择。但有时我会直接使用
write2file=open('myResults.txt','w')
来避免太多缩进级别。因此,如果程序无法访问
write2file.close()
,我仍然对如何解决打开文件的问题感兴趣。python中是否有一个模块可以关闭
IDLE
中所有打开的文件,如果您想引入更多的控制,您将无法绕过额外的缩进。另一种方法是将使用打开文件的代码包装在
try
块中,并在那里放置
except
子句以关闭文件,然后重新引发异常。但这要复杂得多。