VS Code中Python脚本无法读取同目录CSV及__file__报错求助
解决方法
核心问题分析
你遇到的问题本质是脚本运行时的工作目录和脚本实际所在目录不一致,导致相对路径无法定位到CSV文件;而__file__报错是因为你可能在交互式环境(REPL)中执行代码,而非直接运行脚本文件。
1. 确保脚本以文件形式运行,而非交互式环境
__file__变量仅在脚本文件被直接执行时才会被定义,如果是在VS Code的Python交互窗口(比如直接在控制台输入代码)中运行,必然会抛出NameError。解决方式:
- 把代码保存为
.py文件 - 在终端中切换到脚本所在目录,执行
python your_script.py,或者用VS Code的运行/调试功能运行整个文件
2. 动态构建CSV文件路径(推荐)
不管工作目录是什么,通过__file__获取脚本所在目录,再拼接CSV文件路径,彻底避免路径问题:
方法一:使用os.path模块(兼容Python 3.4+)
import os # 获取脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接CSV文件路径(替换成你的CSV文件名) csv_file_path = os.path.join(script_dir, "your_file.csv") # 打开文件 with open(csv_file_path, "r") as f: # 处理文件逻辑 pass
方法二:使用pathlib模块(Python 3.4+更简洁)
from pathlib import Path # 获取脚本所在的绝对目录 script_dir = Path(__file__).parent.resolve() # 拼接CSV文件路径 csv_file_path = script_dir / "your_file.csv" # 打开文件 with open(csv_file_path, "r") as f: # 处理文件逻辑 pass
3. 修正VS Code的运行配置(针对调试/运行按钮)
如果习惯用VS Code右上角的运行按钮,默认会以工作区根目录作为运行的工作目录,需要修改launch.json配置:
- 打开「运行和调试」面板(快捷键
Ctrl+Shift+D) - 点击「创建launch.json文件」,选择Python环境
- 修改配置中的
cwd字段为当前文件所在目录:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}" // 关键设置:运行时切换到脚本所在目录 } ] }
4. 确保python.terminal.executeInFileDir设置生效
如果修改了该设置但没生效,需要:
- 确认设置
python.terminal.executeInFileDir已设为true(通过Ctrl+,打开设置搜索) - 关闭所有已打开的终端窗口,重新打开终端再运行脚本(旧终端不会加载新设置)
内容的提问来源于stack exchange,提问作者Vasyl Shevtsov
相关产品推荐
相关产品推荐

