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
728x90
'Language > Python' 카테고리의 다른 글
Python - iterable 과 iterator, 그리고 반복문 (0) | 2020.01.02 |
---|---|
Python - 문자열(str)/바이트(bytes) 시퀀스와 인코딩(encoding)/디코딩(decoding) (0) | 2019.11.28 |
Python - Sequence Type을 Slice 하기 (0) | 2019.11.25 |
Python - with, context manager에 대한 이해. (0) | 2019.11.16 |
Python - 지능형 리스트 (List Comprehension)/제너레이터 표현식 (Generator expression) 의 이해 및 비교 (0) | 2019.09.13 |
Python - random(), 임의의 수(난수)를 구하는 함수 (0) | 2019.03.20 |
Python - Python 2 에서 Python 3 으로의 전환 (0) | 2019.03.19 |
Python - id(), object의 unique 값(memory address)를 보여주는 함수 (0) | 2019.03.18 |