[原来普通的try+excpt就可以,乌龙了]Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样

Python/PHP/Perl 开发与设计
回复
科学之子
帖子: 2251
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 839 次
接收感谢: 30 次

[原来普通的try+excpt就可以,乌龙了]Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样

#1

帖子 科学之子 » 2017-02-14 4:41

Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样
例如我要删掉N个文件,即使删除失败也直接忽略

代码: 全选

remove('/asfsaf')
    remove('/24234')
上次由 科学之子 在 2017-02-15 18:24,总共编辑 1 次。
头像
vickycq
论坛版主
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
送出感谢: 100 次
接收感谢: 994 次
联系:

Re: Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样

#2

帖子 vickycq » 2017-02-14 9:27

代码: 全选

try:
    os.remove('/asfsaf')
except OSError as e:
    print e
这些用户感谢了作者 vickycq 于这个帖子:
科学之子 (2017-02-15 18:16)
评价: 3.7%
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2251
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 839 次
接收感谢: 30 次

Re: Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样

#3

帖子 科学之子 » 2017-02-14 11:40

vickycq 写了:

代码: 全选

try:
    os.remove('/asfsaf')
except OSError as e:
    print e
但是多个os.remove怎么办?难道每个都要搭配try+except?

不过现在我突然想到一个方法,用循环的方式?
类似

代码: 全选

for x in l:try:
    os.remove(x)
except OSError as e:
    print e
然后把需要用到的字符串写成一个list就可以了
注:纯属自己的猜测,还没试过,等有时间试试
头像
astolia
论坛版主
帖子: 3150
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 527 次

Re: Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样

#4

帖子 astolia » 2017-02-14 15:15

python3:

代码: 全选

import contextlib
with contextlib.suppress(FileNotFoundError):
    os.remove('/abcdefg')
这些用户感谢了作者 astolia 于这个帖子:
科学之子 (2017-02-15 14:07)
评价: 3.7%
科学之子
帖子: 2251
注册时间: 2013-05-26 6:58
系统: Debian 9
送出感谢: 839 次
接收感谢: 30 次

Re: Python如何忽略异常?网上搜都是跳过出现异常的代码块,但我不希望这样

#5

帖子 科学之子 » 2017-02-15 11:20

astolia 写了:python3:

代码: 全选

import contextlib
with contextlib.suppress(FileNotFoundError):
    os.remove('/abcdefg')
https://docs.python.org/3/library/conte ... b.suppress
貌似依然只能是对单条语句生效
我想要的是对整个语句块生效

Wed Feb 15 14:11:46 CST 2017补充:
试了试,对语句块也有效
回复

回到 “Python/Php/Perl”