问个 open file 的例外处理

2017-09-08 12:54:05 +08:00
 fearme

代码如下, 该 hhm.html 已经被锁定是没权限读取的:

f = open('c:\\hhh.html')
try:
    f.read(4)
except:
    print('error')
finally:
    f.close()
print('done')

我希望 python 不要报错,而是能继续走下去执行到 print('done') 这一行

2500 次点击
所在节点    Python
15 条回复
ryd994
2017-09-08 13:24:43 +08:00
没读取权限的话,可能 open 就会出错了
topbandit
2017-09-08 13:29:40 +08:00
with open(file) as f
Marmot
2017-09-08 14:19:11 +08:00
没有读的权限,我就晓得,把 try 放最上面。
fearme
2017-09-08 14:46:00 +08:00
@topbandit with open(file) as f 也一样报错,用 try except 包起来倒是 ok,可是这样的话感觉好丑,每个文件读取都要这样啊

···
try:
with open('r:\\hhh.html') as f:
f.read(4)
except:
print('error')
print('done')
···
fearme
2017-09-08 14:50:45 +08:00
顺便问下,为什么 V2EX 回复主题的时候不能用 markdown 啊
topbandit
2017-09-08 14:53:05 +08:00
你写成个函数不就可以了,为啥回复不能添加表情。。·_·
fearme
2017-09-08 15:40:35 +08:00
@topbandit 文件内部读取规则每个文件都不一样啊。
TimePPT
2017-09-08 15:46:48 +08:00
geelaw
2017-09-08 16:05:44 +08:00
@TimePPT 这是不对的,权限的改变可以发生在判断之后、打开之前。

唯一正确的方法就是尝试打开文件,然后处理失败的情况。
TimePPT
2017-09-08 16:08:19 +08:00
@geelaw 你确定你看了官方文档?
TimePPT
2017-09-08 16:13:08 +08:00
@geelaw 哦哦,抱歉,理解错了 orz
21grams
2017-09-08 16:19:17 +08:00
open 也放到 try 里面啊,不明白问的点是什么
fearme
2017-09-08 17:26:29 +08:00
@21grams 你确定你编译过么。。。。
geelaw
2017-09-08 21:27:27 +08:00
@TimePPT 虽然文档说的是我的意思,但是这个知识并不需要一个具体的文档……几乎所有的操作系统里面都是这样的。
TimePPT
2017-09-08 21:38:20 +08:00
@geelaw 受教了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/389165

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX