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

如何将Python采集的软件版本信息写入指定结构的version.json文件

你当前输出结构不对的原因是用了字典存储采集结果,而你需要的是由固定结构字典组成的数组,按以下步骤修改即可:


修改步骤

  1. 替换存储结构
    把代码里的data_dict = {}改成data_list = []
  2. 调整结果写入逻辑
    把两个分支里的结果赋值逻辑,替换为往列表中插入符合要求结构的字典:
    • perl分支的data_dict[i] = v1_strip替换为
    data_list.append({"software": i, "version": v1_strip})
    
    • 其他软件分支的data_dict[i] = v2_strip替换为
    data_list.append({"software": i, "version": v2_strip})
    
  3. 优化文件写入逻辑
    写入文件建议用w覆盖模式避免旧内容残留,同时把dump的导出对象改成data_list即可。

完整修改后代码

import subprocess as sp, re, json

data = ["node", "python3", "ansible", "perl"] ## 可自行添加更多软件
data_list = []

pattern = r'[a-zA-Z]'
p_perl = r'\((.*?)\)'

        
def getData():
    for i in data:
        if i == "perl":
            v1 = sp.run(["perl", "--version"], check=True, stdout=sp.PIPE)
            v1_decode = v1.stdout.decode('utf-8')
            v1_name = re.search(p_perl, v1_decode).group(1)
            v1_name2 = re.sub(pattern, '',v1_name)
            v1_strip = v1_name2.strip()
            data_list.append({
                "software": i,
                "version": v1_strip
            })

        else:
            v2 = sp.run([i, "--version"], check=True, stdout=sp.PIPE)
            v2_args = sp.run(['head', '-n1'],input=v2.stdout, stdout=sp.PIPE)
            v2_decode = v2_args.stdout.decode('utf-8')
            v2_name = re.sub(pattern, '', v2_decode)            
            v2_strip = v2_name.strip()
            data_list.append({
                "software": i,
                "version": v2_strip
            })

    with open('version.json', 'w', encoding='utf-8') as f:
        json.dump(data_list, f, indent=4, ensure_ascii=False)

        
if __name__ == '__main__':
    getData()

最终输出效果

[
    {
        "software": "node",
        "version": "10.19.0"
    },
    {
        "software": "python3",
        "version": "3.8.10"
    },
    {
        "software": "ansible",
        "version": "2.9.6"
    },
    {
        "software": "perl",
        "version": "5.30.0"
    }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:08