读取 JSON 文件

问题描述 投票:0回答:1

我需要编写一个可以附加(而不是覆盖!)的文件,然后读取该文件。这是我写的代码:

import io, json

def WriteJSON():
    Taskslist = [["1Name", "1c:/path/file.ext", "1Some other text", 10, ["a", "b", "c"], ""],
                 ["2Name", "2c:/path/file.ext", "2Test text", 20, ["a", "b", "c"], ""]]

with io.open('test.txt', 'a', encoding='utf8') as outfile:
    str_ = json.dump(Taskslist, outfile)

def ReadJSON():
    with io.open('test.txt', 'r', encoding='utf8') as readfile:
        rf = json.load(readfile)

    return rf

WriteJSON()
print(ReadJSON())

当我执行这个程序时,我收到一个错误:

'json.decoder.JSONDecodeError:额外数据:第 1 行第 149 列(字符 148)'

但是如果我更改要写入的文件(使用“w”选项而不是“a”选项),文件写入和读取就可以了。 我看到解决方案是逐行读取 JSON 文件,但据我了解 json.dump 将文件写入一个卡住,所以它是一行......

我的目标是编写一个可以更新(追加或删除数据)并且可以在用户请求时随时读取的文件。我真的不需要 JSON 文件,所以可以建议任何其他解决方案。

python json
1个回答
0
投票

json 格式只需要文件中的一个最外层对象——通常是列表或字典。因此,您稍后能够附加到文件的要求将不起作用(除非您稍微重写文件)。

解决此问题的一种常见方法是不使用严格的 json 文件,而是使用一个文件,其中文件中的每个都是一个单独的小 json 记录:

[1,2,3,4,5]
["hello", "goodbye", "adios"]
{"a": 1, "b": 2}

这种格式通常称为“json 行”。

© www.soinside.com 2019 - 2024. All rights reserved.