写入JSON文件并更新所述文件

时间:2016-10-18 12:28:15

标签: python json python-2.7

我有以下代码将写入JSON文件:

import json    

def write_data_to_table(word, hash):
    data = {word: hash}
    with open("rainbow_table\\rainbow.json", "a+") as table:
        table.write(json.dumps(data))

我想要做的是打开JSON文件,向其添加另一行,然后关闭它。如何在不弄乱文件的情况下执行此操作?

截至目前,当我运行代码时,我得到以下内容:

write_data_to_table("test1", "0123456789")
write_data_to_table("test2", "00123456789")
write_data_to_table("test3", "000123456789")

#<= {"test1": "0123456789"}{"test2": "00123456789"}{"test3": "000123456789"}

如何在不完全搞砸的情况下更新文件?

我的预期输出可能类似于:

{
  "test1": "0123456789",
  "test2": "00123456789",
  "test3": "000123456789",
}

2 个答案:

答案 0 :(得分:4)

您可以通过以下方式阅读JSON数据:

parsed_json = json.loads(json_string)

您现在操纵经典字典。您可以使用以下内容添加数据:

parsed_json.update({'test4': 0000123456789})

然后您可以使用以下方法将数据写入文件:

with open('data.txt', 'w') as outfile:
    json.dump(parsed_json, outfile)

答案 1 :(得分:1)

如果你确定结束“}”是文件中的最后一个字节,你可以这样做:

>>> f = open('test.json', 'a+')
>>> json.dump({"foo": "bar"}, f)  # create the file
>>> f.seek(0)
>>> f.read()
'{"foo": "bar"}'
>>> f.seek(-1, 2)
>>> f.write(',\n', f.write(',\n' + json.dumps({"spam": "bacon"})[1:]))
>>> f.seek(0)
>>> print(f.read())
{"foo": "bar",
"spam": "bacon"}

由于您的数据不是分层数据,因此您应该考虑像“TSV”这样的平面格式。