2010-03-23 6 views
1

다른 프로그램 용 플러그인을 만들고 있으므로 가능한 한 가볍게 만들려고합니다.ConfigParser (또는 대안)의 업데이트 섹션

내가해야 할 일은 ConfigParser 구성 파일의 섹션 이름을 업데이트 할 수 있어야합니다.

[project name] 
author:john doe 
email: [email protected] 
year: 2010 

다음으로 사용자가 프로젝트의 이름, 작성자, 이메일 및 연도를 편집 할 수있는 텍스트 필드가 있습니다. 이 같은

1 해놔 내 config 파일 :

[0] 
projectname: foobar 
author:john doe 
email: [email protected] 
year: 2010 

내가 변경할 수 있습니다 그런 식으로 내가 [프로젝트 이름]을 변경 생각하지 않는다

그래서 나는 두 솔루션의 생각, 수 프로젝트의 이름은 다른 옵션과 같습니다. 하지만 문제는 섹션 #이 자동 증가 ([0], [1] 등)해야한다는 것입니다. 그리고 이렇게하려면 모든 섹션을 가져야하고, 다음 숫자가 무엇인지 알아 내야합니다.

다른 옵션은 전체 섹션과 해당 값을 삭제하고 이전 섹션 이름을 보유하는 변수를 함수를 통해 전달하는 것과 같이 좀 더 많은 작업이 필요한 업데이트 된 값으로 다시 추가하는 것입니다 , 등.하지만 더 빠르면 괜찮을 것입니다.

둘 중 어느 것이 가장 좋습니까? 아니면 다른 방법이 있습니까? 가능한 한 가장 빠르거나 가벼운 솔루션으로 기꺼이 가고 있습니다. 더 많은 작업이 필요한지 여부는 중요하지 않습니다.

답변

2

ini 파일은 응용 프로그램을 구성하고 잘 정의 된 입력 등으로 가장 적합합니다. 좀 더 일반적인 직렬화 도구가 필요한 것 같습니다. JSON은이 작업에 적합합니다. 아마도 이러한 필드에 dicts의 목록 (따라서 증가 색인)의 JSON 표현을 저장하려고합니까?

stdlib에서 json 모듈의 사용법은 매우 간단합니다. 예를 들어,

import json 

projects = [] 
projects.append({'project_name': 'foobar', 
       'author': 'John Doe', 
       'email': '[email protected]', 
       'year': '2010'}) 
projects.append({'project_name': 'baz', 
       'author': 'Cat Stevens', 
       'email': '[email protected]', 
       'year': '2009'}) 

with open('projects.json', 'w') as f: 
    json.dump(projects, f) 

마찬가지로 당신이 읽기 모드에서 f을 열었습니다 json.load(f)와 파일에서 직렬화 된 데이터를 복구 할 것 몇 가지 기록을 저장합니다.

+0

감사합니다. 나는 이것을 실험 할 것이다. – sqram

관련 문제