configparser 는 python에서 사용하기 위한 설정값을 저장하거나 불러오는 라이브러리 입니다. (Python Document)

프로그램의 규모가 조금만 커지면 꼭 사용을 하게 됩니다. 가끔은 Config를 사용하지 않고 DB를 사용하는 사람도 볼 수 있습니다. 하지만 DB를 사용하게 되면 확장성이 크게 늘어나지만 오버 스팩이도 하고, 용도에 어긋나는 것 같다.

Config는 프로그램을 동작시킬때는 프로그램 액션과 설정값의 분리가 재활용에 유리합니다. 이런 이유는 동작을 위한 환경이나, 프로그램 재시작시 연속성을 유지하는데 설정값을 많이 사용되기 때문입니다.

그러한 Config를 쉽게 사용하기 위한 것이 configparser 입니다.

configparser 는 파이썬 표준 라이브러리로, 구성 파일(설정 파일)을 읽고, 쓰고, 수정하는 데 사용됩니다. 주로 .ini 형식의 파일을 처리하는 데 적합합니다.

Configparser Code

import os
import configparser

base_dir = os.path.dirname(os.path.abspath(__file__))
config = configparser.ConfigParser(interpolation=None,
                allow_no_value=True, delimiters=('='), strict=False)

config_file = os.path.join(base_dir, 'conf', 'configure.ini')

if not os.path.exists(os.path.join(base_dir, 'conf')):
    os.mkdir(os.path.join(base_dir, 'conf'))
if not os.path.isfile(config_file):
    with open(config_file, 'w', encoding='UTF-8') as fd:
        fd.write('[lv1]\nlv2 = Value\n')

config.read(config_file, encoding='UTF-8')

print(config.sections(), '''\t: print(config.sections()''')
for item in config['lv1']:
    print(item, '''\t: print(item)''')

print(config['lv1']['lv2'], '''\t: print(config['lv1']['lv2']''')

config.set('lv1', 'lv3', 'Value')
with open(config_file, 'w', encoding='UTF-8') as configfile:
   config.write(configfile)

with open(config_file, 'r', encoding='UTF-8') as fd:
    line = fd.read()
    print(line)

configure.ini

[lv1]
lv2 = Value

모든 Config 값은 1:1 구조로 하나의 값을 매칭 시키고 있습니다. 이를 대분류로 구분하기 위해 Section으로 구분을 하고 있죠. 그렇기 때문에 Section이 다르면 동일한 이름의 item을 사용할 수 있습니다.

Output

['lv1'] 	: print(config.sections()
lv2 	: print(item)
Value 	: print(config['lv1']['lv2']
[lv1]
lv2 = Value
lv3 = Value

Configparser

주요 특징

  1. .ini 파일 형식 지원: 섹션, 키, 값 구조로 설정 파일을 관리합니다.
  2. 설정 읽기 및 쓰기: 구성 파일에서 데이터를 읽고, 수정하거나 새로 저장할 수 있습니다.
  3. 유연성: 기본값 설정, 파일이 없는 경우 새로 생성 등 다양한 옵션을 제공합니다.

사용 용도

  • 애플리케이션 설정 관리
  • 사용자 정의 값 저장
  • 개발 및 배포 환경 분리 설정

장점

  • 간단하고 읽기 쉬운 설정 파일 형식 지원
  • 파이썬 내장 라이브러리로 추가 설치 필요 없음

단점

  • 복잡한 구조(중첩된 데이터) 표현은 어려움 (JSON이나 YAML이 더 적합).

이렇다 보니 요즘은 클라우드 프로그램들은 Json이나 Yaml로 많이 넘어가는 것 같긴합니다. 그래도 여전히 간단한 프로그램을 만들기 위해서 사용하기 좋습니다.

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다