요즘 업무상 간간히 Python을 다룰 기회가 많아졌습니다. 제가 Python을 주 언어로 사용하지 않다보니 미숙한 부분도 많아서 추후 정보를 뒤져보기 편하게 저를 위해 정리를 해봅니다. 이번 글에서는 모듈중 configparser에 대하여 정리해 보겠습니다.
Windows OS 에서 많이 사용되는 .ini (Initialization File) 파일을 알고 계실 겁니다.
이것을 간략화 시켜 보자면 다음과 같은 문법을 가집니다.
[섹션이름1]
매개변수이름1=값
매개변수이름2=값
[섹션이름2]
매개변수이름1=값
...
Linux, Unix 계열의 시스템에서는 .cfg (Configuration Initialization File) 파일을 사용합니다.
문법은 거의 같으나 ini 파일에서는 주석을 맨 앞에 ; 를 붙여서 보통 사용하며, .cfg 파일에서는 #을 보통 주석으로 사용합니다. 물론 빈줄이나 들여쓰기 이루어진 부분도 무시됩니다.
Python에서 이 파일을 다루기 위해서 사용되는 모듈은 configparser 입니다. configparser를 사용하는 경우에는 #과 ;을 모두 주석으로 인식 할 수 있습니다. 일단 사용을 위해서는 모듈을 import 한 후 다음과 같이 ConfigParser 클래스 변수를 생성해야 합니다.
import configparser
config = configparser.ConfigParser()
일단 .ini나 .cfg 파일로 원하는 정보를 저장하는 것부터 알아보겠습니다.
해당 변수에 매개변수를 추가하려면 section을 먼저 추가해야 합니다.
section이 추가되지 않은 상태에서 매개변수를 추가하면 exception이 발생합니다.
한번 section 추가 후 매개변수를 추가해 보겠습니다.
config.add_section('섹션명')
config['섹션명']['매개변수명'] = 'hello'
이 이후 파일로 저장하려면 다음과 같이 진행하시면 됩니다.
with open('파일경로', 'w') as configfile:
config.write(configfile)
그 다음은 .ini나 .cfg 파일로부터 정보를 불러오는 것을 알아보겠습니다.
다음과 같이 read 함수를 이용하면 해당 파일에서 정보를 읽어오게 됩니다.
config.read('파일경로')
주의점은 위의 save와 마찬가지로 없는 section을 접근하면 exception이 발생한다는 점입니다.
해결 방법은 두가지 정도가 있을 것 같습니다. 예외처리를 하시거나 section의 존재여부를 체크해서 정보를 읽어오는 것입니다. section의 존재 여부는 다음과 같이 has_section이라는 함수를 이용하면 간단히 알 수 있습니다.
if conifg.has_section('섹션명'):
variable1 = config['섹션명']['매개변수명']
여기서 매개변수 또한 없다면 exception이 발생하기 때문에 만약 매개변수가 없을 수도 있다면 다음과 같이 체크후 읽어주셔야 합니다.
if '매개변수명' in config['섹션명']:
variable1 = config['섹션명']['매개변수명']
'Python' 카테고리의 다른 글
[Python] django (2/3) template 맛보기 (0) | 2024.05.25 |
---|---|
[Python] django (1/3) module 맛보기 (0) | 2024.04.13 |
[Python] datetime (2) | 2024.02.06 |
[Python] Argument Parser (0) | 2024.02.02 |
[Python] wxPython 맛보기 (0) | 2023.12.14 |