2016-08-03 11 views
0

私はこのサイトを初めて利用しており、Pythonを使い始めました。私はこの問題の作業を始める方法を考えようとしています...基本的には、Pythonが/etc/yum.repos.dにあるすべてのyum reposのリストを取得し、リストを以下のようなjson形式で保存する必要があります。yum reposを取得し、json形式のリストとして保存する

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

私は何かを稼ぐことができましたが、実際には何をするつもりはありません。私は最初の作業1を取得したいので、

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

私は、まだ複数のレポのためでコーディングしていない。ここ

#!/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() 

そして、それが返すものです:ここで私が持っているコードです。私はこれに正しく近づいているのですか、それとも良い方法がありますか? OSはRHEL、Pythonのバージョンは2.6.6です。どんな助けでも大歓迎です!

+0

私によく見えます。 – martineau

答えて

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() 

を使用するコードです。

+0

辞書を提案してコードを修正していただき、ありがとうございます。 Pythonの初心者で、私はもっと良い方法がなければならないことを知っていました。 – j0k3R

関連する問題