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

时间:2015-02-26 16:05:41

标签: python json list file add

我最近才开始使用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,因为我每次添加的列表都非常大。

希望任何人都可以帮助我。提前谢谢!

5 个答案:

答案 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)

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

  1. 阅读文件内容。
  2. 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]]
    

答案 3 :(得分:1)

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

但是,如果您的目标是避免一次将整个文件读入内存,则可以使用增量解析器,可以使用纯Python编写自己的文件,也可以使用Yajl-Py之类的文件。

答案 4 :(得分:1)

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

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

之后,使用列表变量

重写json文件