与open一起使用时,Python尝试除非预期之外

最近我一直在 O'reilly 上练习 Jason Cannon 的课程: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 而不是出现错误。请告诉我我哪里做错了。非常感谢

回答

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

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

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


以上是与open一起使用时,Python尝试除非预期之外的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>