调试器差异:VSCode/Terminal(Python)

2024-03-28 08:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想用以下代码读取一个JSON文件:

import json

with open("file.json") as File:
    print(json.load(File.read()))

当我尝试使用VSCode调试器运行它时,出现错误:

[Errno 2] No such file or directory: 'file.json'

但是当我使用python file.py从终端运行它时,它就工作了。 问题是,VSCode以某种方式使用了另一个“工作目录”,因为当我在VSCode中运行os.getcwd()时,我得到了python脚本所在文件夹的父文件夹的路径。 当我从终端运行它时,我得到了正确的路径。 为什么?你知道吗

需要指出的是:问题不在于print语句/json。当我只尝试打开文件而不做任何其他操作,然后通过时,同样的错误也会出现。你知道吗


Tags: 文件代码import路径文件夹json终端错误
3条回答

正如在评论中所讨论的,你的问题是你工作的环境。当程序从终端执行时,它工作并找到了文件。这很可能是因为虚拟环境在VS代码中的设置方式。虚拟环境或venv是一个独立于全局Python安装的Python解释器环境。当您在两个需要不同版本库的不同项目上工作时,它非常有用。例如,一个使用django1.10的项目和一个使用1.9的项目,这样您就不必在安装和卸载它们之间来回切换。你知道吗

A virtual environment is a directory tree which contains Python executable files and other files which indicate that it is a virtual environment.

As explained here,您的.json文件很可能在您的项目虚拟环境之外,这就是它找不到它的原因。我希望这能帮助你理解它。你知道吗

您可以使用os软件包验证文件是否存在:

import os.path
print(os.path.isfile("file.json"))

如果文件存在,则应打印True。你知道吗

您还可以尝试使用绝对路径来确保。你知道吗

import os 
dir_path = os.getcwd()

使用此项获取当前目录。您将能够识别Python从何处运行。您还可以使用JSON文件的完整文件路径。你知道吗

import json

with open("fullpath/to/json/file/file.json") as File:
    print(json.loads(File.read()))

相关问题 更多 >