我是网站新手,刚开始使用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。非常感谢任何帮助!
答案 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()
我认为使用词典是更自然的方式。