鱼C论坛

 找回密码
 立即注册
查看: 1412|回复: 9

[已解决]第033讲异常处理写文件后面数字加字符串出错但可能写入的问题

[复制链接]
发表于 2018-1-12 15:58:06 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 杂草 于 2018-1-12 15:59 编辑

问题一:第033讲异常处理,我用PyCharm尝试一下,虽然出错却是可以写入的,是怎么回事?

PyCharm中的代码:
# -*- coding: utf-8 -*-
try:
    f = open('test.txt', 'w')
    print(f.write('我写入了'))
    sum = 1 + '1'
    f.close()
except:
    print('出错了')

这样是可以写入文件的。


问题二:还有视频中为什么关闭文件f.close()放在finally里面就可以写入了呢?按理来说出错是在写入之前,那就是写入之后才出错的才对吧?
最佳答案
2018-1-12 16:55:15
杂草 发表于 2018-1-12 16:46
我也是一模一样的代码,用PyCharm写入了,真是奇怪。不过我用命令行的话就真的写不入,只有文件。看来是I ...

是的,为了提高效率,内容先放在内存中,等close时才写入磁盘。要不遇到需要多次写入,反复写磁盘会很费时间。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-12 16:08:01 | 显示全部楼层
本帖最后由 yjsx86 于 2018-1-12 16:11 编辑

问题一
# 代码一行一行的执行
try:
    f = open('test.txt', 'w')
    print(f.write('我写入了'))   #在这里已经写入成功
    sum = 1 + '1' #这里出错 try 抓取到错误 跳转到except语句
    f.close()
except:
    print('出错了')

问题二
没看过视频
但是f.close()放在finally里面,是为了解决打开文件后由于出错导致文件不能正常关闭的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 16:11:45 | 显示全部楼层
这么说吧,虽然程序中没有执行close操作,但pycharm或idle会在运行结束后将未关闭的文件再关掉。
你可以在你的程序最后加上一行input(),让程序等待输入,这时你从文件管理器看看,应该文件的长度就为0了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-12 16:17:07 | 显示全部楼层
yjsx86 发表于 2018-1-12 16:08
问题一
# 代码一行一行的执行
try:

你说的没错,是写入成功,但小鱼儿的视频是写入不成功的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-12 16:19:26 | 显示全部楼层
冬雪雪冬 发表于 2018-1-12 16:11
这么说吧,虽然程序中没有执行close操作,但pycharm或idle会在运行结束后将未关闭的文件再关掉。
你可以在 ...

我直接在命令行运行,也是可以写入的。你可以对比下小鱼儿的视频里,视频里说是写入不成功。将关闭的命令放在finally里面才可以写入成功。也就是说不关闭是不会写入的。但我在命令行试不关闭它也照样写入,所以不知道小鱼儿的意思。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 16:25:38 | 显示全部楼层
杂草 发表于 2018-1-12 16:19
我直接在命令行运行,也是可以写入的。你可以对比下小鱼儿的视频里,视频里说是写入不成功。将关闭的命令 ...

刚刚我说的不对,但我再次尝试,在idle下运行你的程序,没有写入,文件的长度为0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-12 16:30:12 | 显示全部楼层
本帖最后由 杂草 于 2018-1-12 16:33 编辑
冬雪雪冬 发表于 2018-1-12 16:25
刚刚我说的不对,但我再次尝试,在idle下运行你的程序,没有写入,文件的长度为0


兄弟 ,这么奇怪?我在IDE里面运行,正常写入啊。

D:\PythonWork\demo\venv\Scripts\python.exe D:/PythonWork/demo/出错信息.py
None
出错了

虽然提示None,但写入是成功的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 16:36:42 | 显示全部楼层
我的显示是:
4
出错了

有test.txt文件,但长度为0,内容没有写入。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-12 16:46:05 | 显示全部楼层
冬雪雪冬 发表于 2018-1-12 16:36
我的显示是:
4
出错了

我也是一模一样的代码,用PyCharm写入了,真是奇怪。不过我用命令行的话就真的写不入,只有文件。看来是IDE问题。看来小甲鱼说的没错。但现在剩下的问题就是为什么要关闭才能写入呢?就是说这个open是需在关闭才算是写入的是吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-12 16:55:15 | 显示全部楼层    本楼为最佳答案   
杂草 发表于 2018-1-12 16:46
我也是一模一样的代码,用PyCharm写入了,真是奇怪。不过我用命令行的话就真的写不入,只有文件。看来是I ...

是的,为了提高效率,内容先放在内存中,等close时才写入磁盘。要不遇到需要多次写入,反复写磁盘会很费时间。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 10:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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