当我使用 json.load() 方法时,为什么 Python3 无法处理位于同一目录中的 json 文件
Why doesn't Python3 fine a json-file which is in the same directory when I use the json.load() method
我正在学习 Python3 并且我正在尝试通过从 JSON 文件启动它的属性来创建对象代理(自定义对象)。
问题是当我启动我的 python 文件时,它没有找到位于同一目录中的文件。我检查了名字,没有错字。我不明白问题到底出在哪里。
这是我的文件夹结构:
project/
model.py
agents-100k.json
这是我的 model.py
文件
import json
class Agent:
def __init__(self, **agent_attributes):
"""Constructor of Agent class"""
# Print each element of dict
print(agent_attributes.items())
# Get the name and the value of each entry in dict
for attr_name, attr_value in agent_attributes.items():
# setattr(instance, attribute_name, attribute_value)
setattr(self, attr_name, attr_value)
def say_hello(self, first_name):
"""Say hello to name given in argument"""
return "Hello " + first_name + "!"
def main():
for agent_attributes in json.load(open("agents-100k.json")):
agent = Agent(**agent_attributes)
print(agent.agreeableness)
main()
这是 agents-100k.json
文件的示例(条目很多,所以我只显示其中两个):
[
{
"age": 84,
"agreeableness": -0.8437190198916452,
"conscientiousness": 0.6271643010309115,
"country_name": "China",
"country_tld": "cn",
"date_of_birth": "1933-12-27",
"extraversion": 0.3229563709288293,
"id": 227417393,
"id_str": "bNn-9Gc",
"income": 9881,
"internet": false,
"language": "Standard Chinese or Mandarin",
"latitude": 33.15219798270325,
"longitude": 100.85840672174572,
"neuroticism": 0.15407262417068612,
"openness": 0.041970542572878806,
"religion": "unaffiliated",
"sex": "Male"
},
{
"age": 6,
"agreeableness": -0.40747441203817747,
"conscientiousness": 0.4352286422343134,
"country_name": "Haiti",
"country_tld": "ht",
"date_of_birth": "2011-12-21",
"extraversion": 1.4714618156987345,
"id": 6821129477,
"id_str": "bt3-xj9",
"income": 1386,
"internet": false,
"language": "Creole",
"latitude": 19.325567983697297,
"longitude": -72.43795260265814,
"neuroticism": -0.4503674752682471,
"openness": -0.879092424231703,
"religion": "Protestant",
"sex": "Female"
},
...
]
最后,这是我在 运行 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'
我是不是做错了什么?
谢谢你的帮助。
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()
This question 对它的工作原理给出了更详细的解释。
我正在学习 Python3 并且我正在尝试通过从 JSON 文件启动它的属性来创建对象代理(自定义对象)。
问题是当我启动我的 python 文件时,它没有找到位于同一目录中的文件。我检查了名字,没有错字。我不明白问题到底出在哪里。
这是我的文件夹结构:
project/
model.py
agents-100k.json
这是我的 model.py
文件
import json
class Agent:
def __init__(self, **agent_attributes):
"""Constructor of Agent class"""
# Print each element of dict
print(agent_attributes.items())
# Get the name and the value of each entry in dict
for attr_name, attr_value in agent_attributes.items():
# setattr(instance, attribute_name, attribute_value)
setattr(self, attr_name, attr_value)
def say_hello(self, first_name):
"""Say hello to name given in argument"""
return "Hello " + first_name + "!"
def main():
for agent_attributes in json.load(open("agents-100k.json")):
agent = Agent(**agent_attributes)
print(agent.agreeableness)
main()
这是 agents-100k.json
文件的示例(条目很多,所以我只显示其中两个):
[
{
"age": 84,
"agreeableness": -0.8437190198916452,
"conscientiousness": 0.6271643010309115,
"country_name": "China",
"country_tld": "cn",
"date_of_birth": "1933-12-27",
"extraversion": 0.3229563709288293,
"id": 227417393,
"id_str": "bNn-9Gc",
"income": 9881,
"internet": false,
"language": "Standard Chinese or Mandarin",
"latitude": 33.15219798270325,
"longitude": 100.85840672174572,
"neuroticism": 0.15407262417068612,
"openness": 0.041970542572878806,
"religion": "unaffiliated",
"sex": "Male"
},
{
"age": 6,
"agreeableness": -0.40747441203817747,
"conscientiousness": 0.4352286422343134,
"country_name": "Haiti",
"country_tld": "ht",
"date_of_birth": "2011-12-21",
"extraversion": 1.4714618156987345,
"id": 6821129477,
"id_str": "bt3-xj9",
"income": 1386,
"internet": false,
"language": "Creole",
"latitude": 19.325567983697297,
"longitude": -72.43795260265814,
"neuroticism": -0.4503674752682471,
"openness": -0.879092424231703,
"religion": "Protestant",
"sex": "Female"
},
...
]
最后,这是我在 运行 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'
我是不是做错了什么?
谢谢你的帮助。
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()
This question 对它的工作原理给出了更详细的解释。