让我们定义一个简单的文件夹结构,如下所示:
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中尝试过,它的表现是一样的。
3条答案
按热度按时间w1jd8yoj1#
您可以在调试配置中使用
cwd
选项,但我建议您不要硬编码路径,而是使用pathlib
或os.path
来指定相对于__file__
位置的文件(我不太清楚您为什么要避免使用这些模块)。iezvtpos2#
没错。我也遇到过同样的问题,这就是我解决我的问题的方法
在内置终端上,在vscode内部:
对我来说,它是:
因为我的代码在这里-〉
~/repos/main.py
。
(已编辑)
我找到了此错误的原因和更好的修复方法
发生错误是因为python调试器从当前打开的文件夹(默认情况下)执行终端中的文件
但是您可以更改此行为,在文件的目录中使用execute:
@ext:ms-python.python execute
当您知道文件位于正确的位置并且指向正确的方向时,这将消除FileNotFoundError。
7d7tgy0s3#
对于我来说,我的main.py位于文件夹A中的文件夹B中。如果我打开文件夹A中的VSCode,并尝试调试main.py,我会得到一个FileNotFoundExeptionfor 'file.txt'。当我打开文件夹B中的VSCode并执行相同操作时,它工作正常。
Python > Terminal: Execute In File Dir
并没有为我解决这个问题)*