【问题标题】:Dumping multiple variables to disk in Json. One variable per line在 Json 中将多个变量转储到磁盘。每行一个变量
【发布时间】:2012-11-23 14:41:26
【问题描述】:

假设我想使用 Json 将多个变量转储到磁盘。我通常这样做的方法是将我的变量创建为字典中的条目,然后将字典转储到磁盘:

with open(p_out, 'wb') as fp:
    json.dump(my_dictionary, fp)

这将创建一个 json 文件,其中字典保存在一个长行中:

{"variable_1": something, "variable_2" something_else, ...}

我不喜欢。我希望将我的变量转储到文本文件中,每行一个变量,例如这些行:

{variable_1: something\n
 variable_2: something\n
 variable_3: something_else}

有没有办法在 Python 中使用 Json 来做到这一点?

【问题讨论】:

  • 假设您有字典{'variable_1': 'something'},您希望输出文件包含"variable_1": "something" 还是variable_1: something。没有引号就不是 JSON。

标签: python json


【解决方案1】:

indent 选项设置为0 或更多:

with open(p_out, 'wb') as fp:
    json.dump(my_dictionary, fp, indent=0)

来自documentation

如果 indent 是一个非负整数,那么 JSON 数组元素和对象成员将使用该缩进级别进行漂亮的打印。缩进级别 0 或负数只会插入换行符。 None(默认)选择最紧凑的表示。

您的示例将输出为:

{
"variable_2": "something_else", 
"variable_1": "something"
}

【讨论】:

  • 谢谢,但这也会在每个对象中插入新行(例如,如果variable_1 是一个列表,它也会在列表中的每对项目之间插入新行)。有没有办法只在变量之间换行?
  • @user273158:不,没有。您必须使用 .dumps() 转储到字符串,然后在将结果写入文件之前进行后处理。
猜你喜欢
  • 2019-07-03
  • 2013-06-07
  • 2021-02-15
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多