Python JSON转储/附加到.txt,每个变量都在新行

Posted

技术标签:

【中文标题】Python JSON转储/附加到.txt,每个变量都在新行【英文标题】:Python JSON dump / append to .txt with each variable on new line 【发布时间】:2013-06-07 22:51:45 【问题描述】:

我的代码创建了一个字典,然后将其存储在一个变量中。 我想将每个字典写入一个 JSON 文件,但我希望每个字典都在一个新行上。

我的字典:

hostDict = "key1": "val1", "key2": "val2", "key3": "sub_key1": "sub_val2", "sub_key2": "sub_val2", "sub_key3": "sub_val3", "key4": "val4"

我的部分代码:

g = open('data.txt', 'a')
with g as outfile:
  json.dump(hostDict, outfile)

这会将每个字典附加到“data.txt”,但它是内联的。我希望每个字典条目都在新行上。 任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

你的问题有点不清楚。如果您在循环中生成hostDict

with open('data.txt', 'a') as outfile:
    for hostDict in ....:
        json.dump(hostDict, outfile)
        outfile.write('\n')

如果您的意思是希望hostDict 中的每个变量都位于新行上:

with open('data.txt', 'a') as outfile:
    json.dump(hostDict, outfile, indent=2)

当设置indent 关键字参数时,它会自动添加换行符。

【讨论】:

这似乎对我不起作用;在我停止在空/不存在的对象上使用 json.dumpjson.dumps 后,问题就消失了。 'json.dump(hostDict, outfile, indent=2)' 这对我有用。谢谢 由于您使用的是 JSON,您可能需要在换行符之前添加一个逗号分隔符:outfile.write(',\n')【参考方案2】:

为避免混淆,请同时解释问题和答案。我假设发布此问题的用户想要以 JSON 文件格式保存字典类型对象,但是当用户使用 json.dump 时,此方法将其所有内容转储在一行中。相反,他想将每个字典条目记录在一个新行上。要实现这种用途:

with g as outfile:
  json.dump(hostDict, outfile,indent=2)

使用indent = 2 帮助我将每个字典条目转储到新行。谢谢@agf。重写此答案以避免混淆。

【讨论】:

这显然不是用户要问的,他要问的是在JSONL format 中存储多个字典。但这可能对其他人提出这个问题有所帮助。

以上是关于Python JSON转储/附加到.txt,每个变量都在新行的主要内容,如果未能解决你的问题,请参考以下文章

漂亮地将 JSON 转储到文本

Python 和 JSON - 附加到字符串对象

在python中附加带有json数据的文本文件

追加到 json 中转储的字典列表,而不用 python 加载列表

python 转储数据库到.json

如何循环 python 读取一组 HTML 文件并转储到 JSON