调试器差异:VSCode /终端(Python)

时间:2019-07-08 12:02:06

标签: python python-3.x

我只是想使用以下代码读取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脚本所在文件夹的父文件夹的路径。 从终端运行它时,我得到正确的路径。 为什么会这样?

仅需指出:问题不是打印语句/ json。当我只尝试打开文件而没有其他任何内容然后通过时,会出现相同的错误。

4 个答案:

答案 0 :(得分:2)

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()))

答案 1 :(得分:0)

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

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

如果文件存在,这应该显示True。

此外,您可以尝试使用绝对路径进行确认。

答案 2 :(得分:0)

如评论中所讨论,您的问题原来是您正在使用的环境。从终端执行该程序后,它开始工作并找到了文件。这很可能是因为在VS Code中设置了虚拟环境的方式。虚拟环境或称为venv的虚拟环境是独立于全局Python安装的Python解释器的隔离环境。当您在需要不同版本库的两个不同项目中工作时,此功能很有用。例如;一个使用Django 1.10的项目和一个使用1.9的项目,因此您不必在安装和卸载它们之间不断拖拉。

  

虚拟环境是包含Python的目录树   可执行文件和其他文件,表明它是虚拟的   环境。

As explained here,您的.json文件很可能在您的项目虚拟环境之外,这就是为什么找不到它的原因。希望对您有所帮助。

答案 3 :(得分:0)

import  json


with open('/Users/my_pc/Downloads/example_2.json') as f:
     data = json.load(f)

print(data)

您可以通过这种方式加载json并提供目录的确切路径 json文件所在的位置。