在Python中,当函数异常退出时,如何关闭文件句柄?
例如,我有一个函数,如:在Python中,当函数异常退出时,如何关闭文件句柄?,python,Python,例如,我有一个函数,如: def example(): fp = open('example.txt','w+') fp.write(str(1/0)) fp.close() 然后它将抛出异常,因为未定义1/0。但是,我既不能删除example.txt,也不能修改example.txt。但是我在Python中有一些重要的数据,所以我不能简单地杀死Python并再次运行它 当函数在异常情况下完成时,如何完成文件的打开 如果我们不试一试,我们该怎么办:。。除了您可以将其包装
def example():
fp = open('example.txt','w+')
fp.write(str(1/0))
fp.close()
然后它将抛出异常,因为未定义1/0。但是,我既不能删除example.txt
,也不能修改example.txt
。但是我在Python中有一些重要的数据,所以我不能简单地杀死Python并再次运行它
当函数在异常情况下完成时,如何完成文件的打开
如果我们不试一试,我们该怎么办:。。除了您可以将其包装在try/except中,以处理错误并在程序结束前关闭文件读取器
def example():
fp = open('example.txt', 'w+')
try:
fp.write(str(1/0))
except ZeroDivisionError:
fp.close()
fp.close()
编辑:@IanAuld的答案比我的好。最好接受它。您可以在try/except中包装它,以处理错误并在程序结束前关闭文件读取器
def example():
fp = open('example.txt', 'w+')
try:
fp.write(str(1/0))
except ZeroDivisionError:
fp.close()
fp.close()
with open('example.txt','w+') as fp:
try:
fp.write(...)
except ZeroDivisionError as e:
print('there was an error: {}'.format(e))
编辑:由@ianault给出的答案比我的好。最好接受这一点
with open('example.txt','w+') as fp:
try:
fp.write(...)
except ZeroDivisionError as e:
print('there was an error: {}'.format(e))
使用带有上下文管理器的,它打开的任何文件一旦超出范围将自动关闭
使用带有上下文管理器的,它打开的任何文件一旦超出范围将自动关闭 这是否意味着,如果我们没有放置try…except…
,我们将无法再关闭该文件?不,您仍然可以使用与以前相同的打开和关闭方式,上下文管理器只需确保该文件在您需要时保持打开状态,并在完成后关闭它。这是否意味着,如果我们没有放置try…except…
,我们将无法再关闭该文件?不,您仍然可以使用与以前相同的打开和关闭方式,上下文管理器只需确保该文件在您需要时保持打开状态,并在完成后关闭它。事实上,我的问题是,如果我没有写一篇文章,除了。。。结构,我可以关闭文件吗?实际上我的问题是,如果我不写一个尝试…除了。。。结构,我可以关闭文件吗?