使用 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))
加载文件内容 -->> 对内容进行操作 -->> 再次转储文件内容。
- 读取文件内容。
- 通过 return 列表中的
json.loads()
加载文件内容。
- 追加新列表。
- 通过
json.dump()
保存转储文件
代码:
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 文件
我最近才开始 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))
加载文件内容 -->> 对内容进行操作 -->> 再次转储文件内容。
- 读取文件内容。
- 通过 return 列表中的
json.loads()
加载文件内容。 - 追加新列表。
- 通过
json.dump()
保存转储文件
代码:
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 文件