首页 > 解决方案 > Python 尝试在与 open 一起使用时出现意外情况

问题描述

最近我一直在练习 Jason Cannon 在 O'reilly 上的课程:https ://learning.oreilly.com/videos/python-for-beginners/9781789617122/9781789617122-video10_3/

在“文件,第二部分”部分的 6:55,我在按照视频中的想法练习错误捕获时遇到了问题。我的代码:

with open('data.txt') as file:
    try:
        file_content = file.read()
    except:
        file_content = ''
print(len(file_content))

这个想法是在找不到文件时捕获错误,try 块运行但 except 块不运行。我预计 file_content 的长度为 0 而不会出现错误。请告诉我哪里做错了。非常感谢

标签: python

解决方案


如果未找到该文件,则会open引发错误,而不是尝试从中读取。

try:
    with open('data.txt') as file:
        file_content = file.read()
except (FileNotFoundError, IOError):
    file_content = ''

请注意,如果open引发FileNotFound错误,则实际上不会创建上下文管理器,因此在控制传递给异常处理程序之前,with语句不需要尝试执行方法。__exit__


推荐阅读