检索yum repos并以json格式保存为列表

时间:2016-08-03 16:09:10

标签: python

我是网站新手,刚开始使用Python。我正在考虑如何开始解决这个问题...基本上我需要Python来检索/etc/yum.repos.d中所有yum repos的列表,然后以json格式保存列表,如下所示: / p>

{
    "[repo_name]" : {
        "name" : "repo_name",
        "baseurl" : "http://example.com",
        "enabled" : "1",
        "gpgcheck" : "0"
    }
    "[next_repo]...
}

我设法让某些东西发挥作用,但它并没有真正做到它想做的事情。这是我的代码:

#!/usr/bin/python

import json

mylist = []
lines = open('/etc/yum.repos.d/repo_name.repo').read().split('\n')

for line in lines:
    if line.strip() != '':
            if '[' in line:
                    mylist.append("{")
                    repo_name = line.translate(None,'[]')
                    mylist.append(repo_name + ':')
                    mylist.append("{")

            elif 'gpgcheck' in line:
                    left, right = line.split('=')
                    mylist.append(left + ':' + right)
                    mylist.append("}")
            else:
                    left, right = line.split('=')
                    mylist.append(left + ':' + right)

out_file = open('test.json','w')
out_file.write(json.dumps(mylist))
out_file.close()

以下是它的回报:

["{", "repo_name:", "{", "name:repo_name", "baseurl:http://www.example.com", "enabled:1", "gpgcheck:0", "}"]

我还没有为多个回购编写代码,因为我只想先让一个回购。我正确地接近这个还是有更好的方法?操作系统是RHEL,python版本是2.6.6。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

这是一个示例文件结构

[examplerepo]
name=Example Repository
baseurl=http://mirror.cisp.com/CentOS/6/os/i386/
enabled=1
gpgcheck=1
gpgkey=http://mirror.cisp.com/CentOS/6/os/i386/RPM-GPG-KEY-CentOS-6

这是我用过的代码

#!/usr/bin/python

import json

test_dict = dict()
lines = open('test', 'r').read().split('\n')
current_repo = None

for line in lines:
    if line.strip() != '':
            if '[' in line:
                current_repo = line
                test_dict[current_repo] = dict()
            else:
                k, v = line.split("=")
                test_dict[current_repo][k] = v

out_file = open('test.json', 'w')
out_file.write(json.dumps(test_dict))
out_file.close()

我认为使用词典是更自然的方式。