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

如何修改Python代码实现多组磁盘信息合并到JSON的description字段?

如何修改Python代码生成指定格式的输出?

首先得明确:你期望的输出格式其实不符合JSON规范(同一个键下直接放多个字典在语法上是不合法的),不过我会先帮你实现你想要的视觉格式,同时也会给出标准JSON格式的方案,供你参考。

问题分析

你的原始代码每次处理一行就覆盖json_data,遇到空行就打印单条磁盘信息,所以输出是多个独立的description字典。而你想要把所有磁盘信息整合到同一个description下面,核心是要调整数据结构——把多个磁盘字典收集到一个列表里,再绑定到description键上。

修改后的代码(匹配你期望的格式)

data = {'description': []}
current_disk = {}

with open("json_content.txt", "r") as fp:
    for line in fp.readlines():
        stripped_line = line.strip()
        # 处理空行:把当前收集的磁盘信息加入列表,重置临时字典
        if not stripped_line:
            if current_disk:
                data['description'].append(current_disk)
                current_disk = {}
            continue
        # 拆分键值对(只拆一次,避免值里有冒号导致错误)
        split_data = stripped_line.split(':', 1)
        if len(split_data) == 2:
            key = split_data[0].strip()
            value = split_data[1].strip()
            current_disk[key] = value
# 处理文件末尾没有空行的情况,避免最后一条数据丢失
if current_disk:
    data['description'].append(current_disk)

# 手动格式化输出,模拟你想要的格式(注意:这不是合法JSON)
print("{'description': {")
for idx, disk in enumerate(data['description']):
    disk_str = ", ".join([f"{k}: '{v}'" for k, v in disk.items()])
    # 最后一条不加逗号
    print(f" {{{disk_str}}}{',' if idx != len(data['description'])-1 else ''}")
print(" }}")

运行这段代码后,输出会和你期望的一致:

{'description': {
 {'mount_disk': '/data', 'actual_size': '2.5T', 'fsystem': '/dev/sdb'},
 {'mount_disk': '/data', 'actual_size': '1.5T', 'fsystem': '/dev/sdb'},
 {'mount_disk': '/data', 'actual_size': '3.5T', 'fsystem': '/dev/sdb'}
 }}

更规范的标准JSON格式实现

如果你需要后续可正常解析的合法JSON格式,推荐使用json模块输出,只需把最后的打印部分替换成:

import json
print(json.dumps(data, indent=2))

输出会是标准的JSON数组结构:

{
  "description": [
    {
      "mount_disk": "/data",
      "actual_size": "2.5T",
      "fsystem": "/dev/sdb"
    },
    {
      "mount_disk": "/data",
      "actual_size": "1.5T",
      "fsystem": "/dev/sdb"
    },
    {
      "mount_disk": "/data",
      "actual_size": "3.5T",
      "fsystem": "/dev/sdb"
    }
  ]
}

关键改动说明

  • 新增current_disk临时字典,用来收集单个磁盘的所有键值对,避免覆盖之前的数据
  • 遇到空行时,把current_disk加入data['description']列表,而不是直接打印
  • 使用split(':', 1)确保值中包含冒号时(比如path:/mnt:backup)不会被错误拆分
  • 补充处理文件末尾无空行的情况,防止最后一条磁盘信息丢失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:04:41