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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:55:03