You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将函数生成的JSON数据写入文件?

解决Python JSON数据写入文件为空的问题

我来帮你一步步排查并解决这个问题,你的代码主要有几个关键问题导致文件为空,咱们逐个修正:

1. 没有正确获取JSON数据(未调用生成函数)

你定义了output()函数返回目标JSON数据,但代码里既没调用output()拿到实际数据,还写了未定义的json_data(),这直接导致没有可写入的内容。

2. 直接写入Python字典而非序列化后的JSON字符串

Python的字典对象不能直接写入文件,必须用json模块把它序列化为合法的JSON字符串,否则不仅格式不符合JSON规范,还可能导致写入失败或内容异常。

3. 文件操作的不规范(存在丢失数据风险)

直接用open()打开文件后,如果代码中途报错或忘记执行close(),可能导致数据没真正写入磁盘。推荐用with语句,它会自动帮你关闭文件,更安全可靠。

4. 注意字典里的无效数字格式

你返回的字典中sequence_number: 06972977357是无效的八进制数(Python中0开头的数字默认是八进制,但八进制只能包含0-7),运行时会直接报错,得去掉前导0改成普通整数6972977357。

修正后的完整代码

import json

def output():
    # 修正sequence_number的前导0问题,避免语法报错
    return {
        'logs': ['3982f208'],
        'events': [{
            'sequence_number': 6972977357,
            'labels': [],
            'timestamp': 1556539666498,
            'message': 'abc [2015-12-19 12:07:38.966] INFO [b5e04d2f5948] [ProcessController] PRMS: {"MessageType"=>"TYPE1", "Content"=>{"Name"=>"name1", "Country"=>"europe", "ID"=>"345", "Key1"=>"634229"}}'
        }]
    }

def write():
    # 1. 调用output()获取要写入的字典数据
    json_data = output()
    # 2. 序列化字典为JSON字符串,ensure_ascii=False保留特殊字符,indent=4美化格式(可选)
    json_str = json.dumps(json_data, ensure_ascii=False, indent=4)
    # 3. 使用with语句安全操作文件,自动处理关闭逻辑
    with open('results.txt', 'a', encoding='utf-8') as f:
        f.write(json_str)
        # 可选:写入换行符,避免多次追加时内容连在一起
        f.write('\n')

# 最后记得调用write()执行写入操作
write()

关键细节解释

  • json.dumps():核心作用是将Python字典转换为标准JSON字符串,indent=4让输出的JSON更易读,ensure_ascii=False避免非ASCII字符被转义成编码格式。
  • with open(...):上下文管理器,不管代码是否报错,都会自动关闭文件,确保数据稳定写入磁盘。
  • 追加模式'a':如果文件不存在会自动创建,存在则在末尾追加内容;如果需要覆盖原有文件内容,把模式改成'w'即可。

这样运行代码后,results.txt里就会有格式正确的JSON数据啦。

内容的提问来源于stack exchange,提问作者scott martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:24:18