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

如何修改Python代码以打印已生成的JSON文件内容

问题原因及修正方案

你的代码无法打印JSON内容,甚至大概率会提前抛出运行异常,核心问题有以下几点:

  • 未正确使用CSV解析能力:你直接调用csvfile.read()将整个CSV内容读取为普通字符串,没有使用csv.DictReader()解析为可按列名取值的字典结构,遍历字符串得到的是单个字符,根本无法通过m['No']取到对应字段,代码运行到此处就会中断。
  • 返回值错误:你在函数最后返回的是已经调用过close()方法的文件对象jsonfile,不是JSON内容本身,打印已关闭的文件对象只会输出类似<_io.TextIOWrapper name='orders.json' mode='w' encoding='utf-8'>的无效信息,不会输出文件内存储的JSON内容。
  • 资源管理不严谨:硬编码调用close()关闭文件的方式如果中间运行出错,会导致文件资源没有正常释放。

修正后的可运行代码如下:

import csv 
import json

def jsonformat(infile,outfile):
    contents = {}
    # 用with上下文管理器自动处理文件关闭,避免资源泄漏
    with open(infile, 'r', encoding='utf-8') as csvfile:
        # 用csv.DictReader解析CSV,每一行转为以表头为键的字典
        reader = csv.DictReader(csvfile)
        for m in reader:
            key = m['No']
            contents[key] = m
    # 生成带缩进、支持中文的JSON字符串
    json_content = json.dumps(contents, indent=4, ensure_ascii=False)
    # 写入输出文件
    with open(outfile, 'w', encoding='utf-8') as jsonfile:
        jsonfile.write(json_content)
    # 返回JSON内容而非文件对象
    return json_content

infile = 'orders.csv'
outfile = 'orders.json'

output = jsonformat(infile,outfile)
print(output)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:00:05