我最近才开始使用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
,因为我每次添加的列表都非常大。
希望任何人都可以帮助我。提前谢谢!
答案 0 :(得分:1)
这取决于在文件仍在修改时是否需要读取此数组。
我建议省略数组活页夹' [....]'这样你现在就有一个类似csv的文件,你可以继续写数据。
如果必须加载到特定格式,您可以编写一个简单的解析器来重新构造所需的数组。
答案 1 :(得分:1)
您无法在不加载文件的情况下修改文件中的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))
答案 2 :(得分:1)
加载文件内容 - >>对内容进行操作 - >>再次转储文件内容。
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]]
答案 3 :(得分:1)
如果不读取文件,您将无法执行此操作,因为文件IO的附加模式始终将数据附加到文件的末尾,这意味着您将始终将数据附加到结束数组括号之外。 / p>
但是,如果您的目标是避免一次将整个文件读入内存,则可以使用增量解析器,可以使用纯Python编写自己的文件,也可以使用Yajl-Py之类的文件。
答案 4 :(得分:1)
首先加载json并将其放入变量中。然后你要做的是将[9,10,11,12]添加到列表varbele:
list.append([9,10,11,12])
之后,使用列表变量
重写json文件