FileNotFoundError是OSError的子类,当操作不存在的文件或目录时触发,如open()、os.remove()等操作。常见场景包括读取、删除或移动不存在的文件。可通过try-except捕获异常,并用os.path.exists()或pathlib.Path.exists()提前检查路径,推荐结合使用以应对多任务环境中的文件变动风险。

在Python中,FileNotFoundError 是一个常见的异常,属于 OSError 的子类。当你尝试操作一个不存在的文件或目录时,就会触发这个异常。比如使用 open() 打开一个不存在的文件,或者用 os.remove() 删除一个不存在的文件,都会抛出 FileNotFoundError。
常见触发场景
以下是一些容易引发 FileNotFoundError 的典型代码情况:
- open('nonexistent.txt', 'r') —— 尝试以读取模式打开一个不存在的文件
- os.remove('missing_file.log') —— 删除一个并不存在的日志文件
- shutil.move('source.txt', 'dest.txt') —— 移动一个源文件,但源路径不存在
如何捕获和处理异常
为了避免程序因文件找不到而崩溃,可以使用 try-except 结构来捕获异常:
try:with open('data.txt', 'r') as f:
content = f.read()
except FileNotFoundError:
print("错误:指定的文件不存在,请检查文件路径。")
你也可以获取更具体的提示信息,比如输出具体是哪个文件没找到:
立即学习“Python免费学习笔记(深入)”;
程序介绍:程序采用.net 2.0进行开发,全自动应用淘客api,自动采集信息,无需,手工更新,源码完全开放。(程序改进 无需填入阿里妈妈淘客API 您只要修改app_code文件下的config.cs文件中的id为你的淘客id即可)针对淘客3/300毫秒的查询限制,系统采用相应的解决方案,可以解决大部分因此限制带来的问题;程序采用全局异常,避免偶尔没考虑到的异常带来的问题;程序源码全部开放,请使
print(f"文件未找到: {e.filename}")
预防措施与最佳实践
提前检查文件是否存在,可以减少异常发生的概率:
- 使用 os.path.exists(path) 判断文件或路径是否存在
- 使用 pathlib.Path.exists()(推荐,更现代)
示例:
from pathlib import Pathfile_path = Path("data.txt")
if file_path.exists():
with open(file_path, 'r') as f:
print(f.read())
else:
print("文件不存在,请确认路径。")
注意:即使做了存在性检查,仍建议配合 try-except 使用,因为在多任务环境中,文件可能在检查后被删除。
基本上就这些。FileNotFoundError 虽然常见,但通过合理的异常处理和路径检查,很容易控制。










