使用 json (python) 将项目添加到 txt 文件中的列表

Add item to list in txt file using json (python)

我最近才开始 python,有几个关于使用 json 将项目添加到文件列表的问题。

我的 txt 文件包含以下字符串: [[1, 2, 3, 4], [5, 6, 7, 8]] 我想使用 json 向列表中添加一个项目。有没有办法在不加载文件的情况下执行此操作?

import json
testfile = open('testfile, 'a')
list3 = [9,10,11,12]
json.dump(list3, testfile)

这将导致 [[1,2,3,4], [5,6,7,8]][9,10,11,12] 但是我想让 [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]] 写入文件.

我可以使用 extend 吗? 如果我这样做会影响使用 json.read 的读取速度吗? 我必须使用json,因为我每次添加的列表都非常大。

希望有人能帮我解决这个问题。提前致谢!

这取决于您是否需要在文件仍在修改时读取此数组。

我建议省略数组联编程序“[ .... ]”,这样您现在就有了一个类似于 csv 的文件,您可以继续向其中写入数据。

如果必须加载成特定格式,您可以编写一个简单的解析器来重新构造所需的数组。

您无法在不加载文件的情况下修改文件中的 JSON。你必须这样做:

import json

with open('testfile', 'r') as f:
    json_list = json.loads(r.read())

list3 = [9,10,11,12]
json_list.append(list3)

with open('testfile', 'w') as f:
    f.write(json.dumps(json_list))

加载文件内容 -->> 对内容进行操作 -->> 再次转储文件内容。

  1. 读取文件内容。
  2. 通过 return 列表中的 json.loads() 加载文件内容。
  3. 追加新列表。
  4. 通过json.dump()
  5. 保存转储文件

代码:

import json
testfile = '/home/vivek/Desktop/input12.txt'

with open(testfile ) as fp:
    content = fp.read()

value = json.loads(content)

list3 = [9,10,11,12]
value.append(list3)

with open(testfile, "wb" ) as fp:
    json.dump(value, fp)

输出: 文件内容:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

如果不读取文件,您将无法执行此操作,因为文件 IO 的追加模式始终将数据追加到文件末尾,这意味着您将始终将数据追加到结束数组括号之外.

然而,如果您的目标是避免一次将整个文件读入内存,您可以使用增量解析器,通过编写您自己的纯 Python 或使用类似 Yajl-Py 的东西。

首先加载 json 并将其放入变量中。然后你要做的是将 [9,10,11,12] 添加到列表变量中:

list.append([9,10,11,12])

之后用列表变量重写 json 文件