遗憾的是,我不知道如何处理python"with"语句的异常.如果我有密码:

with open("a.txt") as f:
    print f.readlines()

我真的很想处理‘文件未找到异常’,以便做一些事情.但是我不会写

with open("a.txt") as f:
    print f.readlines()
except:
    print 'oops'

而且不会写字

with open("a.txt") as f:
    print f.readlines()
else:
    print 'oops'

将"with"括在try/Except语句中不起作用,否则不会引发异常.我能做些什么才能以Pythonic的方式处理‘With’语句中的失败呢?

推荐答案

from __future__ import with_statement

try:
    with open( "a.txt" ) as f :
        print f.readlines()
except EnvironmentError: # parent of IOError, OSError *and* WindowsError where available
    print 'oops'

如果您希望对开放调用和工作代码中的错误进行不同的处理,可以执行以下操作:

try:
    f = open('foo.txt')
except IOError:
    print('error')
else:
    with f:
        print f.readlines()

Python相关问答推荐

比较两个二元组列表,NP.isin

@Property方法上的inspect.getmembers出现意外行为,引发异常

如何使用pandasDataFrames和scipy高度优化相关性计算

删除最后一个pip安装的包

在Pandas DataFrame操作中用链接替换'方法的更有效方法

Pandas - groupby字符串字段并按时间范围 Select

在Mac上安装ipython

计算天数

将scipy. sparse矩阵直接保存为常规txt文件

基于形状而非距离的两个numpy数组相似性

下三角形掩码与seaborn clustermap bug

如何根据rame中的列值分别分组值

使用tqdm的进度条

获取PANDA GROUP BY转换中的组的名称

按条件添加小计列

为什么dict. items()可以快速查找?

以极轴表示的行数表达式?

仅取消堆叠最后三列

如何使用Polars从AWS S3读取镶木地板文件

如何在Python中画一个只能在对角线内裁剪的圆?