Language/Python

Python - configparser, 기본적인 설정파일을 다루는 모듈

TechNote.kr 2019. 10. 11. 23:51
728x90

configparser.ConfigParser()


 configparser 모듈은 ConfigParser class 를 제공하고, ConfigParser class 는 Microsoft Windows의 INI 와 같은 형식의 설정파일 구조를 다룰 수 있다. 

 

[sample.ini]

[KeyList]
# Set Key Value
 
Key1 = 10
Key2 = 20
Key3 = 30
Key4 = 40
Key5 = 50

[NameList]
# Set Name Value
 
Name1 = abc
Name2 = bcd
Name3 = cde
Name4 = def
Name5 = efg

 

위와 같은 형태의 설정 파일을 읽기 위해서 다음과 같은 코드를 사용할 수 있다. 

from configparser import ConfigParser

if __name__ == "__main__":
    config = ConfigParser(interpolation=None)
    config.read("./sample.ini")

    print(config.sections())
    for section in config.sections():
        print('[' + section + ']')
        print(config.items(section))

[실행 결과]

['KeyList', 'NameList']
[KeyList]
[('key1', '10'), ('key2', '20'), ('key3', '30'), ('key4', '40'), ('key5', '50')]
[NameList]
[('name1', 'abc'), ('name2', 'bcd'), ('name3', 'cde'), ('name4', 'def'), ('name5', 'efg')]

한가지 특이 사항으로 ConfigParser 를 통해 읽어 들인 설정 값은 모두 string으로 인지가 된다. 

아래와 같은 코드로 값에 대한 type을 찍어 보면 다음과 같은 결과를 얻을 수 있다. 

for key, value in config.items(section):
    print(key + " : " + value + " : " + str(type(value))

[실행 결과]

key1 : 10 : <class 'str'>
key2 : 20 : <class 'str'>
key3 : 30 : <class 'str'>
key4 : 40 : <class 'str'>
key5 : 50 : <class 'str'>

name1 : abc : <class 'str'>
name2 : bcd : <class 'str'>
name3 : cde : <class 'str'>
name4 : def : <class 'str'>
name5 : efg : <class 'str'>

 

대표적인 설정 파일로 samba 설정 파일인 smb.conf 파일 또한 위 ConfigParser 를 통해 parsing 이 가능하다. 

 

[reference repository]

https://github.com/TechNoteCode/smb_conf_python_parser

 

TechNoteCode/smb_conf_python_parser

Contribute to TechNoteCode/smb_conf_python_parser development by creating an account on GitHub.

github.com

 

 

 

 

 

 

728x90