|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 cjb2008508 于 2017-7-14 14:10 编辑
小甲鱼老师讲解final时的代码如截图所示,
Finally:
f.close()
但是尝试几次发现文件并没有保存。
按照finally语句用于程序检查异常后仍能执行,那么如果想要保存文件更改内容应该把打开文件,写入文件然后close掉文件整体移到finally之后才能保存吧。
1.按照小甲鱼老师代码操作如图,发现内容并未保存:
2.按照如下语句输入之后发现最后正常保存:
try: #结合except使用目的是检验代码异常并归类输出相关信息
f = open('tip3.txt','wt') #用可写权限打开一个名叫tip3.txt文件
print(f.write('i hay too')) #打印出写入f 文件内容的字节数
file #此处的file未被定义,程序运行至此会报错‘name 'file' is not defined’
f.close() #保存并关闭f文件
except (OSError,TypeError,NameError) as reason: #结合try检验代码是否有错
print('出错了\n错误原因'+str(reason)) #file没有定义会报错并显示出‘name 'file' is not defined’
finally: #在程序检测异常之后任然执行语句
f = open('tip3.txt','wt')
print(f.write('i hay too')) #在try中程序报错后仍然执行tip3文件更改
f.close() #关闭文件
综上所述小甲鱼老师是不是讲错了呢?
update:1.更新以上程序代码的注解,希望各位鱼友理解这段代码的初衷是关于程序的异常处理
2.各位鱼友指正之前程序里面close没有带小括号,目前已经加上,但我发现close在程序中没有小括号也似乎能保存并关闭文件。
3.再次验证发现,finally之后的语句即报错后继续执行在文件中更新内容,及时没有close(),该文件任然能正常保存并退出。代码如下:
新问题:哪位大神可否告知在finally之后系统会自动关闭打开的文件吗?为什么注释掉close()之后文件仍然可以正常写入呢?
try:
f = open('tip3.txt','wt')
print(f.write('without close'))
file
f.close
except (OSError,TypeError,NameError) as reason:
print('出错了\n错误原因'+str(reason))
finally:
f = open('tip3.txt','wt')
print(f.write('without close'))
# close() 注释掉之后任然可以更改并退出文件 |
|