让我们定义一个简单的文件夹结构,如下所示:
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中尝试过,其行为相同。
答案 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}}(我不太确定为什么要避免使用这些模块)。