我只是想使用以下代码读取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。当我只尝试打开文件而没有其他任何内容然后通过时,会出现相同的错误。
答案 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文件所在的位置。