与open一起使用时不应使用Python try
最近我一直在练习杰森·坎农在奥莱利的《莱辛》: 在“文件,第二部分”部分的6:55,我在按照视频中的想法练习错误捕捉时遇到了问题。我的代码:与open一起使用时不应使用Python try,python,Python,最近我一直在练习杰森·坎农在奥莱利的《莱辛》: 在“文件,第二部分”部分的6:55,我在按照视频中的想法练习错误捕捉时遇到了问题。我的代码: with open('data.txt') as file: try: file_content = file.read() except: file_content = '' print(len(file_content)) 其思想是在找不到文件时捕获错误,try块运行,而except块不运行。我希望文件
with open('data.txt') as file:
try:
file_content = file.read()
except:
file_content = ''
print(len(file_content))
其思想是在找不到文件时捕获错误,try块运行,而except块不运行。我希望文件内容的长度为0,而不是出现错误。请告诉我哪里做错了。非常感谢如果找不到该文件,则引发错误的是
打开的
,而不是试图读取该文件
try:
with open('data.txt') as file:
file_content = file.read()
except (FileNotFoundError, IOError):
file_content = ''
请注意,如果
open
引发FileNotFound
错误,则实际上不会创建上下文管理器,因此,在控制传递给异常处理程序之前,with
语句不需要尝试执行\uuuuuuuuuuuuuuuu
方法。输出是什么?错误在代码的第一行,try语句之前生成。您可能想把它移到内部,并考虑如何处理它。它是否给出引发异常的行号?(它是在您的try
块内还是…更早?)这里的重要信息是,它还应该包括一个行号,我猜这会将您指向open()
作为错误源,而不是read()
(这反过来会告诉你,你的程序从未到达它的try
块!)@Samwise:很抱歉,我没有得到你提到的“行号”,但现在我得到了!是的,行号是1,谢谢你指出它,以便我能清楚地理解它!