Python新手求助:同目录data.txt触发FileNotFoundError[Errno 2]
解决FileNotFoundError问题
可能的原因及对应解决方案
1. 首次运行时文件未创建
你的代码逻辑是先读取data.txt再写入,但第一次执行add操作时,这个文件还不存在,自然会触发报错。可以修改代码,处理文件不存在的场景:
case 'add': todo = input("enter a todo") + "\n" try: # 尝试读取文件,不存在则捕获异常 with open('data.txt', 'r') as file: todos = file.readlines() except FileNotFoundError: # 文件不存在时初始化空列表 todos = [] todos.append(todo) with open('data.txt', 'w') as file: file.writelines(todos)
这里用with语句自动管理文件关闭,比手动调用close()更安全,还能避免资源泄漏。
2. 运行脚本的工作目录不正确
虽然你说main.py和data.txt在同一目录,但如果运行脚本时的当前工作目录不是这个文件夹,Python就会在错误的路径下查找文件。可以在代码开头加一行打印当前工作目录,确认路径是否正确:
import os print("当前工作目录:", os.getcwd())
如果输出路径不是main.py所在的文件夹,要么切换到对应目录再运行脚本,要么用脚本所在目录拼接文件绝对路径:
import os # 获取脚本所在的绝对路径 script_dir = os.path.dirname(os.path.abspath(__file__)) file_path = os.path.join(script_dir, 'data.txt') case 'add': todo = input("enter a todo") + "\n" try: with open(file_path, 'r') as file: todos = file.readlines() except FileNotFoundError: todos = [] todos.append(todo) with open(file_path, 'w') as file: file.writelines(todos)
3. 文件名称或格式异常
- 检查文件名是否确实是
data.txt,注意Linux/macOS区分大小写,比如Data.txt和data.txt会被视为两个不同文件。 - 查看文件是否有隐藏后缀,比如Windows下可能显示
data.txt但实际是data.txt.txt,需要开启“显示文件扩展名”选项确认。
内容的提问来源于stack exchange,提问作者user22250523
相关产品推荐
相关产品推荐

