Visual Studio 代码:FileNotFoundError:[Errno 2] 没有这样的文件或目录

You*_*ark 4 path visual-studio-code

当我通过 Visual Studio Code 加载文件时,VScode 找不到目录。

我可以在没有终端问题的情况下运行代码,结果是:

young@young-desktop:/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials/10_RNN/ChatBot$ python text_load_text.py 
['fij\n', 'feijfaef\n', 'ef\n', 'awef\n', 'awe\n', 'g\n', 'aweg\n', 'ae\n', 'wg\n', 'awe\n', 'h\n', 'aw\n', 'h\n', 'aw\n', 'ef\n', 'aweg\n', 'wea\n', 'gaw\n', 'eg\n', '\n']
Run Code Online (Sandbox Code Playgroud)

但是使用 VScode:

young@young-desktop:/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials$ cd /media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials ; env "PYTHONIOENCODING=UTF-8" "PYTHONUNBUFFERED=1" /home/young/anaconda3/bin/python /home/young/.vscode/extensions/ms-python.python-2018.6.0/pythonFiles/PythonTools/visualstudio_py_launcher.py /media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials 39707 34806ad9-833a-4524-8cd6-18ca4aa74f14 RedirectOutput,RedirectOutput /media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials/10_RNN/ChatBot/text_load_text.py
Traceback (most recent call last):
  File "/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials/10_RNN/ChatBot/text_load_text.py", line 8, in <module>
    with open('test.txt', 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
Run Code Online (Sandbox Code Playgroud)

什么原因导致这个问题?

test.txt 文件原本打算位于 ./data/test.txt

所以我测试了

with open('./data/test.txt', 'r') as f:
Run Code Online (Sandbox Code Playgroud)

但是 VScode 失败了

所以我试图通过尝试将 test.txt 文件移动到工作目录:

with open('test.txt', 'r') as f:
Run Code Online (Sandbox Code Playgroud)

with open('./test.txt', 'r') as f:
Run Code Online (Sandbox Code Playgroud)

但是所有的 VScode 都失败了。

小智 10

试试这个:在 VSCode python 设置中启用以下选项

在终端中执行文件时,是否使用在文件目录中执行,而不是在当前打开的文件夹中执行


soh*_*ihi 8

首先,获取当前运行的模块的目录os.path.dirname(__file__)。然后,您可以将所需文件的相对路径加入此目录路径。

from os.path import dirname, join
current_dir = dirname(__file__)
file_path = join(current_dir, "./test.txt")
with open(file_path, 'r') as f:
Run Code Online (Sandbox Code Playgroud)


You*_*ark 1

当我打开这个项目时,我将其作为“TensorFlow-Tutorials”文件夹打开。

所以我的工作目录是:

young@young-desktop:/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials
Run Code Online (Sandbox Code Playgroud)

所以 ”。” 表示TensorFlow-Tutorials路径
因此,以下路径找不到文件

with open('./test.txt', 'r') as f:
Run Code Online (Sandbox Code Playgroud)

解决方案是添加额外的部分来准确指示我的真实目标目录:

with open("./10_RNN/ChatBot/test.txt", 'r') as f:
    x = f.readlines()
print(x)
Run Code Online (Sandbox Code Playgroud)