如何使用json.load将信息从txt保存到字典

时间:2015-07-13 04:41:44

标签: python json dictionary dump

我正在尝试在字典上使用json.load;但是,我收到了这个错误:

  

追踪(最近的呼叫最后):
      文件“C:\ Python34 \ Main.py”,第91行,中          主()
    在主要文件中的文件“C:\ Python34 \ Main.py”,第87行        match_histories = json.load(“match_histories.txt”)
  文件“C:\ Python34 \ lib \ json__init __。py”,第265行,在加载中      返回负载(fp.read(),
  AttributeError:'str'对象没有属性'read'

这是我的代码(我先导入json):

import json
match_histories = {}
match_histories["age"] = 25
json.dump(match_histories, "match_histories.txt")
match_histories = json.load(open("match_histories.txt"))

嗯,现在我收到了转储错误:

  

追踪(最近的呼叫最后):
   文件“C:\ Python34 \ Main.py”,第91行,中      主()
  文件“C:\ Python34 \ Main.py”,第82行,在主体中    match_histories = get_match_histories(challenger_Ids)
  文件“C:\ Python34 \ Main.py”,第50行,在get_match_histories中   json.dump(match_histories,“match_histories.txt”)
  转储中的文件“C:\ Python34 \ lib \ json__init __。py”,第179行    fp.write(块)
  AttributeError:'str'对象没有属性'write'

在尝试了建议之后,我将代码更改为

import json
match_histories = {}
match_histories["age"] = 25
with open("match_histories.txt") as match_file:
    match_histories = json.dump(match_histories, "match_histories.txt")
with open("match_histories.txt") as match_file:
    match_histories = json.load(match_file)

但我仍然收到错误

  

文件“C:\ Python34 \ lib \ json__init __。py”,第179行,转储中      fp.write(块)
  AttributeError:'str'对象没有属性'write'

(对不起,我是python和编程的新手)

1 个答案:

答案 0 :(得分:3)

  

属性错误:' str'对象没有属性'读'

正如您所看到的,它尝试在传递的对象上调用Papa.parse(fileInput.files[0], { complete: function(results) { console.log(results); } }); ,但您传递的是字符串对象而不是文件(或任何其他实现read()的对象)

read()想要一个文件对象,而不是它的路径字符串,所以使用json.load()打开文件然后传递它,或者像下面的代码那样:

open()

如果您要打开要写入的文件,则with open('file.json') as json_file: json_data = json.load(json_file) 模式应w open() open('file.json', 'w')

来自docs

  

json.load(fp,...)

     

反序列化fp(.read() - 支持包含a的类文件对象   JSON文档)使用此转换表的Python对象。

您与json.dump

有同样的问题
  

属性错误:' str'对象没有属性'写'

     

json.dump(obj,...)将obj序列化为JSON格式的流到fp(a   .write() - 使用此转换表支持类文件对象

实施例

import json
match_histories = {}
match_histories["age"] = 25

print 'Python dict is', match_histories

with open('match.json', 'w') as json_file:
    json.dump(match_histories, json_file)

with open('match.json', 'r') as json_file:
    match_histories = json.load(json_file)

print 'Python dict restored from JSON', match_histories

运行它

python jsontest.py

Python dict is {'age': 25}
Python dict restored from JSON {u'age': 25}

JSON

{"age": 25}