为什么';t Python3是一个json文件,当我使用json.load()方法时,它位于同一目录中

为什么';t Python3是一个json文件,当我使用json.load()方法时,它位于同一目录中,python,json,traceback,file-not-found,Python,Json,Traceback,File Not Found,我正在学习Python3,并试图通过从JSON文件启动对象代理的属性来创建一个对象代理(自定义对象) 问题是,当我启动python文件时,它找不到同一目录中的文件。我查了一下名字,没有输入错误。我不明白问题到底出在哪里 以下是我的文件夹结构: project/ model.py agents-100k.json 这是我的model.py文件 导入json 类代理: 定义初始化(自,**代理属性): “”“代理类的构造函数”“” #打印dict的每个元素 打印(代理\属性.ite

我正在学习Python3,并试图通过从JSON文件启动对象代理的属性来创建一个对象代理(自定义对象)

问题是,当我启动python文件时,它找不到同一目录中的文件。我查了一下名字,没有输入错误。我不明白问题到底出在哪里

以下是我的文件夹结构:

project/
    model.py
    agents-100k.json
这是我的
model.py
文件

导入json
类代理:
定义初始化(自,**代理属性):
“”“代理类的构造函数”“”
#打印dict的每个元素
打印(代理\属性.items())
#获取dict中每个条目的名称和值
对于attr\u name,agent\u attributes.items()中的attr\u值:
#setattr(实例、属性名称、属性值)
setattr(自身、属性名称、属性值)
def说你好(自我,名字):
“”“向参数中给定的名称问好”“”
返回“你好”+名字+“!”
def main():
对于json.load(打开(“agents-100k.json”))中的agent_属性:
代理=代理(**代理属性)
打印(代理、合意性)
main()
下面是
agents-100k.json
文件的一个示例(有很多条目,所以我只展示其中的两个):

最后,这是我在运行
python3 project/model.py
时遇到的错误:

Traceback (most recent call last):
  File "project/model.py", line 50, in <module>
    for agent_attributes in json.load(open("agents-100k.json")):
IOError: [Errno 2] No such file or directory: 'agents-100k.json'
回溯(最近一次呼叫最后一次):
文件“project/model.py”,第50行,在
对于json.load(打开(“agents-100k.json”))中的agent_属性:
IOError:[Errno 2]没有这样的文件或目录:“agents-100k.json”
我做错什么了吗


无论如何感谢您的帮助。

Python将打开与脚本执行位置相关的文件。因此,如果使用project/model.py运行该文件,json应该位于项目文件夹之外

如果json始终包含在python文件所在的同一文件夹中,则可以使用以下代码打开该文件:

import json
import os

path = os.path.dirname(os.path.abspath(__file__))
import jso


def main():
    for agent_attributes in json.load(open(os.path.join(path, "agents-100k.json")):
        agent = Agent(**agent_attributes)
        print(agent.agreeableness)

main()

对其工作原理进行了更详细的解释

这并不是PythonFWIW所特有的-的概念是一个操作系统的东西。作为一般规则:永远不要假设当前的工作目录是什么(在代码执行之前可能会发生更改),始终使用绝对路径。哦,我不知道。非常感谢你。你作为链接提出的问题帮助我更好地理解了它。
import json
import os

path = os.path.dirname(os.path.abspath(__file__))
import jso


def main():
    for agent_attributes in json.load(open(os.path.join(path, "agents-100k.json")):
        agent = Agent(**agent_attributes)
        print(agent.agreeableness)

main()