V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
fearme
V2EX  ›  Python

问个 open file 的例外处理

  •  
  •   fearme · 2017-09-08 12:54:05 +08:00 · 2643 次点击
    这是一个创建于 2642 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    15 条回复    2017-09-08 21:38:20 +08:00
    ryd994
        1
    ryd994  
       2017-09-08 13:24:43 +08:00 via Android
    没读取权限的话,可能 open 就会出错了
    topbandit
        2
    topbandit  
       2017-09-08 13:29:40 +08:00
    with open(file) as f
    Marmot
        3
    Marmot  
       2017-09-08 14:19:11 +08:00
    没有读的权限,我就晓得,把 try 放最上面。
    fearme
        4
    fearme  
    OP
       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
        5
    fearme  
    OP
       2017-09-08 14:50:45 +08:00
    顺便问下,为什么 V2EX 回复主题的时候不能用 markdown 啊
    topbandit
        6
    topbandit  
       2017-09-08 14:53:05 +08:00
    你写成个函数不就可以了,为啥回复不能添加表情。。·_·
    fearme
        7
    fearme  
    OP
       2017-09-08 15:40:35 +08:00
    @topbandit 文件内部读取规则每个文件都不一样啊。
    TimePPT
        8
    TimePPT  
       2017-09-08 15:46:48 +08:00
    geelaw
        9
    geelaw  
       2017-09-08 16:05:44 +08:00
    @TimePPT 这是不对的,权限的改变可以发生在判断之后、打开之前。

    唯一正确的方法就是尝试打开文件,然后处理失败的情况。
    TimePPT
        10
    TimePPT  
       2017-09-08 16:08:19 +08:00
    @geelaw 你确定你看了官方文档?
    TimePPT
        11
    TimePPT  
       2017-09-08 16:13:08 +08:00
    @geelaw 哦哦,抱歉,理解错了 orz
    21grams
        12
    21grams  
       2017-09-08 16:19:17 +08:00
    open 也放到 try 里面啊,不明白问的点是什么
    fearme
        13
    fearme  
    OP
       2017-09-08 17:26:29 +08:00
    @21grams 你确定你编译过么。。。。
    geelaw
        14
    geelaw  
       2017-09-08 21:27:27 +08:00
    @TimePPT 虽然文档说的是我的意思,但是这个知识并不需要一个具体的文档……几乎所有的操作系统里面都是这样的。
    TimePPT
        15
    TimePPT  
       2017-09-08 21:38:20 +08:00 via iPhone
    @geelaw 受教了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5798 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:40 · PVG 09:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.