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

VS Code中Python无法打开同目录TXT文件(仅工作区顶层相对路径有效)

解决VS Code中Python读取嵌套文件的FileNotFoundError问题

问题描述

执行以下Python代码时触发FileNotFoundError: [Errno 2] No such file or directory:'movies.txt':

with open("movies.txt", "r", encoding= "utf-8") as movies:

推测问题源于VS Code工作区的文件嵌套设置(文件位于主工作区文件夹下3层),需解答以下疑问:

  • 有没有修复方法?
  • 是否应该停止使用嵌套文件?
  • VS Code允许的文件嵌套层数是多少?
  • 新手应遵循哪些文件组织最佳实践?

已尝试的排查操作

  • 确认文件与代码在同一目录
  • 重命名文件
  • 将文件移至其他目录测试
  • 用独立代码+同目录TXT文件测试,问题复现
  • 使用完整文件路径可正常读取,但需要相对路径以便后续上传
  • 重启VS Code及电脑
  • 更新launch.json文件
  • 咨询ChatGPT 3.5
  • 禁用近期安装的扩展
  • 通过命令行用Python可正常读取该TXT文件
  • 将Python文件和TXT文件移至工作区顶层,代码可正常运行
  • 删除并重置工作区文件夹
  • 将包含文件的直接文件夹添加至工作区

修复方法

方法1:调整VS Code运行工作目录

打开运行和调试面板(Ctrl+Shift+D),若没有launch.json文件则点击「创建launch.json文件」并选择Python环境,在配置中添加"cwd": "${fileDirname}",确保Python运行时的工作目录是当前代码文件所在目录。示例配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 当前文件",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${fileDirname}"
        }
    ]
}

保存后重新运行代码,此时相对路径会基于代码文件所在目录解析。

方法2:在代码中动态拼接路径

如果不想修改launch.json,可通过__file__获取当前脚本路径,动态拼接目标文件的正确路径:

import os
# 获取当前脚本所在目录
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接目标文件路径
file_path = os.path.join(script_dir, "movies.txt")
with open(file_path, "r", encoding="utf-8") as movies:
    # 后续操作逻辑

疑问解答

是否应停止使用嵌套文件?

不需要。合理的文件嵌套是良好项目结构的一部分,按功能、模块划分目录层级能让项目更清晰易维护。问题根源不是嵌套层数,而是VS Code默认的运行工作目录设置。

VS Code允许的文件嵌套层数是多少?

VS Code本身没有限制文件嵌套层数,操作系统的文件系统可能有路径长度限制(比如Windows默认260字符),但日常开发中3层嵌套完全在合理范围内,不会触发问题。

新手文件组织最佳实践

  • 按功能/模块划分目录:比如把数据处理脚本放在data_processing/,配置文件放在config/,资源文件(如txt、csv)放在对应脚本目录或统一的resources/目录
  • 保持工作区根目录简洁:不要把所有文件堆在顶层,避免后期文件过多难以管理
  • 统一资源文件存放规则:若多个脚本共用同一资源文件,可放在项目根目录下的assets/或data/目录,通过相对路径引用
  • 避免过深嵌套:建议嵌套层数不超过5层,过深的目录结构会增加路径引用复杂度,也不利于快速定位文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:12:46