写在前面
最近在使用 vscode 写代码 (python) 时发现使用相对路径读取文件以及写入文件时,想要直接在当前目录下读写一直提示没有该文件,需要返回根目录。并且使用 vscode 自带调试"F5"以及 Code Runner 扩展即右上角三角形都是如此。参考了许多资料,终于解决了问题。
所用测试文件
这是我的文件结构
test.py
with open("./test.txt") as f:
text = f.read()
print(text)
test.txt
This is a passage for demonstration.
"F5"调试
调试报错
[Errno 2] No such file or directory: ‘./test.txt’
解决方法
在所配置的 launch.json 文件中的 configurations 列表中加入这一行,记得在上一行末尾加上一个逗号 。
“cwd”: “${fileDirname}”
再来看一下效果。现在可以正常运行了。
我个人认为,这里解决的应该是更改了相对的环境,没有修改之前是相对于工作路径而言(即上面的 PYTHON 文件夹, .vscode 文件夹所在的位置),修改之后则是相对于当前环境而言。
Code Runner调试
调试报错
FileNotFoundError: [Errno 2] No such file or directory: ‘./test.txt’
解决方法
打开扩展"Code Runner"→打开扩展设置→随便找到一个“在setting.json中编辑”→把下面三行加到最后面(大括号里,第一行应该在之前安装扩展时就改过了 )
"code-runner.runInTerminal": true, "code-runner.fileDirectoryAsCwd": true, "python.terminal.executeInFileDir": true
当然,也可以在扩展中找到对应的选项并打上勾
在 Code Runner 的扩展设置中找到第二行
在 python 的设置中找到第三行
具体操作:文件→首选项→设置→扩展→ Python →找到对应项
再来看一下效果。现在可以正常运行了。
这里解决的思路跟第一种不一样,我们可以看到,它还是直接进入了目标文件夹里(即图片中的 test 文件夹)。实际上,即使你啥都没修改,只要你在每次使用 Code Runner 调试时, cd 一下进入对应的文件夹也还是可以正常运行的。
写在最后
本来我都是在需要用到文件路径时在该文件前加上前面的一大堆前缀,但是当别人使用我的代码时总是需要修改路径,这才查阅了众多资料并总结一下,最后的最后,这是第一次写,有许多不足的地方,有什么改进的地方欢迎大家提出(欧我现在还不知道目录的那个超链接怎么搞,暂时先不研究啦)。欧因为是参考了很多的博客然后写出来的,不知应该写原创还是转载,侵删喔。