python - 将 JSON 写入日志文件并将每个对象写入新行
问题描述
在使用 API 提取数据后,我正在尝试写入日志文件。得到这个之后,我正在迭代,所以我可以得到我想要的信息。
def write_audit_logs_file():
audit_logs = get_audit_logs(get_zd_encoded_auth())
with open('audit_logs_info.log', 'w') as out_file:
for item in audit_logs['audit_logs']:
out_file.write(json.dumps(item))
write_audit_logs_file()
当我运行它时,它会以一行的形式写入我的文件,但我希望每个 JSON 对象都位于单独的行上。
我目前得到的是这样的:
{key:value, key:value, key:value}{key:value, key:value, key:value}{key:value, key:value, key:value}{key:value, key:value, key:value}
但我想要的是这样的:
{key:value, key:value, key:value}
{key:value, key:value, key:value}
{key:value, key:value, key:value}
{key:value, key:value, key:value}
解决方案
您可以追加'\n'
:
with open('audit_logs_info.log', 'w') as out_file:
for item in audit_logs['audit_logs']:
out_file.write(json.dumps(item) + '\n')
或者使用.join
(如果你有很多项目可能会快一点,audit_logs['audit_logs']
因为它只会打一个write
电话):
with open('audit_logs_info.log', 'w') as out_file:
out_file.write('\n'.join(json.dumps(item) for item in audit_logs['audit_logs']))
带有map
, 的较短版本仍会进行一次write
调用:
with open('audit_logs_info.log', 'w') as out_file:
out_file.write('\n'.join(map(json.dumps, audit_logs['audit_logs'])))
推荐阅读
- javascript - NodeJS:将立体声 PCM 波流捕获到单声道 AudioBuffer
- flutter - 带有 BoxDecoration 和子元素的 Container 中图标的具体位置:Row
- ios - 可以删除 .dYSM 文件吗?
- c++ - C ++从模块大小中的进程读取所有内存
- javascript - 重新加载页面后,ajax 没有将我的输入保存在表单中
- swift - 类初始化器 swift ,将向量设为可选
- javascript - Reacht JS:渲染异步创建的数组时未正确应用 CSS
- sql - 如何在 Presto SQL 中取消嵌套数组值的列?
- azure - KeyVaultClient 方法 GetSecret() 安全吗?
- python - 在(Python)中读取 csv 文件时读取上一行