본문으로 바로가기

# configuration 파일 생성 및 사용

category Computer Science/Python 2020. 9. 12. 23:17

이번 장에서는, python 에서 config.ini 파일 생성 및 가져다 사용하는 방법에 대해 기술한다.

: DB 설정 정보나 쓰레드 설정 주기 등  설정 정보를 따로 config에 빼두면 관리도 쉽고, 여러 곳에서 공통적으로도 사용이 가능해진다.

 

사용한 설정 파일 포맷 : ini     * json, yaml 도 가능

 

[INI(initialization)]

단순 구조의 텍스트 파일로, key-value 스타일이다.

section을 통해 key-value 들을 그룹화하여 관리 가능하다.

 

[1. config.ini 생성]

configparser를 사용해 config 파일을 읽고 쓸수 있다.

import configparser

#  
config = configparser.ConfigParser()

# section => 'DB_CONFIG'
# key-value => 'dbname'-'postgres' 
config['DB_CONFIG'] = {
    'dbname': 'postgres',
    'host': 'localhost',
    'port': '5432',
}

# 
with open('./db_config.ini', 'w') as f:
      config.write(f)

생성된 db_config.ini

 

[2. config.ini 사용]

> os.getcwd() : 현재 작업중인 디렉토리 위치 표시(절대 경로) 

> os.sep : /

 

읽는 방법 ( 2가지 )

2.1 config['section']['key']

2.2 config.get('setction', 'key')

import os
import configparser


# 
config = configparser.ConfigParser()

# 파일 위치 관련 
print("work dir = ", os.getcwd())
print("seperator = ", os.sep)
print()

# DB 연결 설정 정보 세팅 ( db_config.ini에 정의 )
config.read(os.getcwd() + os.sep + 'db_config.ini', encoding='utf-8')

# get config > case 1
dbname = config['DB_CONFIG']['DBNAME']
host = config['DB_CONFIG']['HOST']
port = config['DB_CONFIG']['PORT']

# get config > case 2
print(config.get('DB_CONFIG', 'DBNAME'))

print("dbname = ", dbname)
print("host = ", host)
print("port = ", port)

 

[3. 설정정보 출력]

config에 작성된 정보를 출력

# db_config 정보 출력
for section in config.sections():
    print("[ Section: %s ]" % section)
    for options in config.options(section):
        print("> %s:::%s:::%s" % (options,
                                  config.get(section, options),
                                  str(type(options))))