You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何捕获FileNotFoundError并提示用户输入错误文件名?

问题分析与解决

嘿,我知道问题出在哪了!你的代码逻辑有个小漏洞——input()函数本身不管用户输入什么内容,都不会抛出OSError异常,只有当你尝试打开这个文件的时候,才会触发找不到文件的错误。

原代码的问题

你的原代码里,try块只包裹了input()语句,但input()只会返回用户输入的字符串(哪怕是不存在的文件名),不会触发任何异常。真正会抛出FileNotFoundError(属于OSError的子类)的操作是用这个文件名打开文件,而这部分代码你没放到try块里,所以异常根本没被捕获到。

修正后的代码

把文件打开操作放进try块里,就能正确捕获异常并给用户提示了:

try:
    filename = input("Your file name: ")
    # 核心:将文件打开操作纳入try块范围
    with open(filename, 'r') as file:
        # 这里可以添加文件读取/处理的逻辑
        print("文件已成功打开!")
except FileNotFoundError as e:
    # 精准捕获“文件不存在”的错误
    print(f'我们遇到了错误:你输入的文件名不存在 - {str(e)}')
except OSError as e:
    # 兜底捕获其他文件操作相关的OSError(比如权限不足等)
    print(f'我们遇到了文件操作错误:{str(e)}')

额外说明

  • 如果只需要处理“文件名错误/文件不存在”的情况,直接捕获FileNotFoundError就足够了,这样不会误捕获其他类型的OSError(比如文件权限问题)。
  • 使用with open(...)语法可以自动管理文件句柄,避免忘记关闭文件的问题。

内容的提问来源于stack exchange,提问作者Darentina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:52:25