为了账号安全,请及时绑定邮箱和手机立即绑定

with as 遇到异常之后,到底能不能关闭文件呢?

遇到异常之后,with as 到底能不能关闭文件呢?

正在回答

4 回答

我觉得不能,所以用with-as操作文件时,最好用try-except捕获可能发生的异常,只有有了try-except文件才能保证一定被关闭,当没有try-except捕获异常时,一旦异常发生,异常就被提交给python解释器了,导致程序不再向下执行,故文件未关闭

0 回复 有任何疑惑可以回复我~
#1

慕粉3830120

with as 实质是调用上下文协议,不管有没有错误,一定要调用__exit__函数,而视频也说了,执行完该函数后关闭文件
2018-10-12 回复 有任何疑惑可以回复我~

自己运行一下代码就知道了

try:
   with open('t1.txt', 'r') as f1:
       cont = f1.read()
       print int(cont)
       print "f1 qushiba"

except:
   print 'file expection'

print f1.closed

0 回复 有任何疑惑可以回复我~
#1

Dieter_Lan

我觉得的是能关闭
2017-09-10 回复 有任何疑惑可以回复我~
#2

hehehehehehehehe 回复 Dieter_Lan

你这里都设置了异常了,肯定会关闭的!去掉try试了下,不能关闭
2018-02-23 回复 有任何疑惑可以回复我~

不管有没有异常 都会先自动关闭文件 如果没有设置try except来捕获该异常 就会由python解释器抛出异常了

0 回复 有任何疑惑可以回复我~

在文件不存在的情况下,不能正常关闭文件,所以这是with  as语句的一个问题,需要加新的try except语句来catch f.seek产生的valueError(起始值不能是-5)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Python错误和异常
  • 参与学习       31680    人
  • 解答问题       31    个

让我们一起来学习Python对于错误和异常的处理方式

进入课程

with as 遇到异常之后,到底能不能关闭文件呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信