debugging VSCode Python调试器文件未找到错误

oo7oh9g9  于 2022-11-14  发布在  Vscode
关注(0)|答案(3)|浏览(351)

让我们定义一个简单的文件夹结构,如下所示:

project
+---code
|       main.py
|
\---data
        foo.txt

main.py:

foo_path = "./../data/foo.txt"

with open(foo_path) as f:
    s = f.read()
    print(s)

当使用python main.py命令正常运行时,此代码运行良好,但当使用VSCode Python调试器进行调试时,它抛出以下错误。

Exception has occurred: FileNotFoundError
[Errno 2] No such file or directory: './../data/foo.txt'
  File "C:\Users\user\Workspaces\project\code\main.py", line 3, in <module>
    with open(foo_path) as f:

我在Windows 10中使用Python 3.7.1 Anaconda版本的VSCode。我知道文件路径类似于Linux路径,但它在正常运行时工作。我在the GitHub repo of Python VSCode Extension中找不到任何开放问题。这是一个常见错误,还是我做错了什么?
同样,如果我定义了foo_path = ".\\..\\data\\foo.txt",它的行为和前一个一样。它正常运行,在调试时给出同样的错误。
我如何在不使用额外的包(如os.path)或使用完整文件路径的情况下修复此问题?
编辑:我在Ubuntu 18.04中尝试过,它的表现是一样的。

w1jd8yoj

w1jd8yoj1#

您可以在调试配置中使用cwd选项,但我建议您不要硬编码路径,而是使用pathlibos.path来指定相对于__file__位置的文件(我不太清楚您为什么要避免使用这些模块)。

iezvtpos

iezvtpos2#

没错。我也遇到过同样的问题,这就是我解决我的问题的方法

在内置终端上,在vscode内部:

  • 将目录更改为代码所在的目录。例如:
cd /path_to_your_code_dir/

对我来说,它是:

cd /repos/

因为我的代码在这里-〉~/repos/main.py

  • 然后再次运行VSCode Python调试器


(已编辑)

我找到了此错误的原因和更好的修复方法

发生错误是因为python调试器从当前打开的文件夹(默认情况下)执行终端中的文件
但是您可以更改此行为,在文件的目录中使用execute:

  • 转到vscode设置(或使用快捷键:Ctrl+逗号
  • 然后在设置中搜索此@ext:ms-python.python execute
  • 您将看到“在文件目录中执行”设置
  • 然后选中复选框,* 执行文件目录中的代码,而不是当前打开的文件夹 *
  • 返回到您的代码并重新运行(即单击调试器运行按钮)

当您知道文件位于正确的位置并且指向正确的方向时,这将消除FileNotFoundError。

7d7tgy0s

7d7tgy0s3#

对于我来说,我的main.py位于文件夹A中的文件夹B中。如果我打开文件夹A中的VSCode,并尝试调试main.py,我会得到一个FileNotFoundExeptionfor 'file.txt'。当我打开文件夹B中的VSCode并执行相同操作时,它工作正常。

folder A
-- folder B
|     main.py
|     file.txt
  • (按照另一条评论中的建议转动设置Python > Terminal: Execute In File Dir并没有为我解决这个问题)*

相关问题