VSCode Python调试器FileNotFoundError

时间:2019-03-25 11:19:22

标签: python debugging visual-studio-code

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

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 Debugger进行调试时会引发以下错误。

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中将VSCode与Python 3.7.1 Anaconda版本一起使用,我知道文件路径就像Linux路径一样,但是在正常运行时可以工作。我在the GitHub repo of Python VSCode Extension中找不到任何未解决的问题。这是常见错误,还是我做错了什么?

此外,如果我定义foo_path = ".\\..\\data\\foo.txt",则其行为与上一个相同。它可以正常运行,并且在调试时会给出相同的错误。

如何在不使用os.path之类的额外软件包或使用完整文件路径的情况下解决此问题?

编辑:我在Ubuntu 18.04中尝试过,其行为相同。

1 个答案:

答案 0 :(得分:1)

您可以使用cwd option in your debug configuration,但我建议您不要对路径进行硬编码,而应使用cat - foo.xml > tmp <<EOF && mv tmp foo.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE wo-national-phase-information SYSTEM "wo-national-phase-information-v1-5.dtd"> <wo-national-phase-information country='US' file-name='US-IB-FEB-2019.xml'> EOF pathlib来指定相对于{位置的文件{1}}(我不太确定为什么要避免使用这些模块)。