DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

Python/Python

[Python] configparser를 이용하여 config (설정값 ini 파일) 관리하기

Jongwon Kim 2020. 11. 1. 15:08
반응형

프로그램을 개발하다보면 환경이나 사용자에 따른 설정값이 필요한 경우가 있습니다. 이러한 설정값을 매번 변수로 설정하고 불러오게 된다면, 불편함이 따르게되고 다양한 환경설정에 어려움이 생기게됩니다. 쉽게 예를 들면, 그림 1과 같이 게임에서 그래픽 설정이 있죠. 이번 포스팅에서는 쉽게 설정 파일을 읽고 쓰게 할 수 있는 표준 라이브러리 configparser 패키지 관리에 대해 알아보겠습니다.

 

 

그림 1. 사전에 저장된 설정값

 

1. configparser를 이용한 설정파일 만들기

 

import configparser

# 설정파일 만들기
config = configparser.ConfigParser()

# 설정파일 오브젝트 만들기
config['system'] = {}
config['system']['title'] = 'Neural Networks'
config['system']['version'] = '1.2.42'

 

config 파일을 생성한 뒤, config[ '오브젝트 명'  ] = {} 으로 섹션을 생성할 수 있습니다. 데이터의 값은 오직 문자열로만 저장되기 때문에 읽고 쓰기 과정에서 전처리 과정이 필요합니다. 보다 다양하고 많은 숫자형 데이터를 처리하기에는 json 파일 형식이 보다 적합하기도 합니다. 

 

2. 설정파일 저장 후 읽기

 

# 설정파일 저장
with open('config.ini', 'w', encoding='utf-8') as configfile:
    config.write(configfile)

# 설정파일 읽기
config = configparser.ConfigParser()    
config.read('config.ini', encoding='utf-8') 

# 설장파일 색션 확인
config.sections()

# 섹션값 읽기
ver = config['system']['version']
title = config['system']['title']

print(title,ver)

이러한 매커니즘을 통해 다양한 설정 파일을 읽고 쓰고 불러올 수 있습니다. 파일 내용 수정은 읽기를 통해 불러온 뒤, config 만들기 과정을 반복해주면 됩니다.

 

3. 최종 응용 코드

 

# -*- coding: utf-8 -*-
"""
@author: Deep.I Inc.
"""

import configparser
from time import strftime


def config_generator():
    # 설정파일 만들기
    config = configparser.ConfigParser()

    # 설정파일 오브젝트 만들기
    config['system'] = {}
    config['system']['title'] = 'Neural Networks'
    config['system']['version'] = '1.2.42'
    config['system']['update'] = strftime('%Y-%m-%d %H:%M:%S')

    config['video'] = {}
    config['video']['width'] = '640'
    config['video']['height'] = '480'
    config['video']['type'] = 'avi'

    # 설정파일 저장
    with open('config.ini', 'w', encoding='utf-8') as configfile:
        config.write(configfile)


def config_read():
    
    # 설정파일 읽기
    config = configparser.ConfigParser()    
    config.read('config.ini', encoding='utf-8') 

    # 설정파일의 색션 확인
    # config.sections())
    version_read(config)

def version_read(config):

    ver = config['system']['version']
    title = config['system']['title']
    print(title,ver)

config_generator()
config_read()

 

 

그림 2. ini 파일은 메모장에서 쉽게 열어볼 수 있습니다.

 

 

 

# 머신러닝 프로젝트 제작, 상담 및 컨설팅  / 머신러닝 접목 졸업작품 컨설팅

# 데이터 가공, 수집, 라벨링 작업 / C, 파이썬 프로그램 제작

# email : deepi.contact.us@gmail.com

# site : www.deep-i.net

반응형