首页 > 解决方案 > 将 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} 

标签: python

解决方案


您可以追加'\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'])))

推荐阅读