鱼C论坛

 找回密码
 立即注册
查看: 2269|回复: 5

033课堂讲解

[复制链接]
发表于 2017-10-13 15:07:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
try:
    f = open('test.txt','w')
    print(f.write('我存在了!!'))
    sum = 1 + '1'
    f.close()
except (TypeError,OSError) :
    print('出错啦!')

这个列子小甲鱼说文件被写入了,但是在sum = 1 + '1'异常了,直接跳到了except 处,f.close()没有被执行,所以test.txt文件是空的,但是实际我看到文件里确实把【我存在了!!】这几个字保存下来了啊!这是为啥?是小甲鱼老师讲错了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-13 15:14:28 | 显示全部楼层
sum = 1 + '1'是因为类型不一致导致异常。f.write('我存在了!!')是向文件写入数据。f.close()只是关闭文件指针。关闭文件。解除对该文件的控制
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-13 15:33:04 | 显示全部楼层
我觉得应该是python的垃圾回收机制帮你关闭了文件,顺便将内存的数据写入到文件中了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-13 15:55:47 | 显示全部楼层
你再试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-14 00:30:20 | 显示全部楼层
是这样的,python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件
就是说不可能被再次引用的时候,会自动关闭文件

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-10-14 09:54:18 | 显示全部楼层
实践出真知...
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-24 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表