💡 파이썬으로 ini 설정 파일 읽고 쓰기 완벽 가이드
프로그램을 개발하다 보면 환경설정 파일을 따로 관리해야 할 때가 많습니다.
예를 들어 데이터베이스 접속 정보, 버전 정보, 실행 옵션 등을 코드와 분리해 관리하면 유지보수가 훨씬 쉬워집니다.
이럴 때 가장 간단하고 가독성 좋은 형식이 바로 INI 파일입니다.
파이썬에서는 표준 라이브러리인 configparser 모듈을 이용해 ini 파일을 손쉽게 읽고 쓸 수 있습니다.
이번 글에서는 ini 파일 생성 → 읽기 → 수정 → 저장 과정을 하나의 예제로 자세히 살펴보겠습니다.
📁 1️⃣ INI 파일 기본 구조
우선 ini 파일은 섹션(section)과 키-값 쌍으로 구성됩니다. 예를 들어 아래와 같은 설정 파일이 있다고 해봅시다.
[database]
host = localhost
user = root
password = 1234
port = 3306
[app]
debug = True
version = 1.0.0
각 []로 둘러싸인 부분은 섹션 이름이고, 내부에 key=value 형태로 값이 저장됩니다.
이제 파이썬 코드로 이 파일을 읽어볼까요?
🧠 2️⃣ INI 파일 읽기 (Read)
import configparser
config = configparser.ConfigParser()
config.read('config.ini', encoding='utf-8')
host = config['database']['host']
user = config['database']['user']
port = config.getint('database', 'port')
debug = config.getboolean('app', 'debug')
print(f"DB: {host}, USER: {user}, PORT: {port}, DEBUG: {debug}")
configparser.ConfigParser() 객체를 이용해 ini 파일을 불러오고,
섹션 이름과 키 이름으로 원하는 값을 가져올 수 있습니다.
또한 숫자나 불리언 값은 getint(), getboolean()으로 변환하여 읽을 수 있습니다.
🧱 3️⃣ INI 파일 생성 및 쓰기 (Write)
import configparser
config = configparser.ConfigParser()
config['database'] = {
'host': '127.0.0.1',
'user': 'admin',
'password': 'abcd',
'port': '3306'
}
config['app'] = {
'debug': 'False',
'version': '1.0.0'
}
with open('config.ini', 'w', encoding='utf-8') as f:
config.write(f)
print("config.ini 파일이 생성되었습니다.")
위 코드를 실행하면 config.ini 파일이 자동으로 생성되며,
지정한 섹션과 키-값이 저장됩니다.
🔧 4️⃣ INI 파일 수정 및 업데이트 (Update)
import configparser
config = configparser.ConfigParser()
config.read('config.ini', encoding='utf-8')
config['database']['password'] = 'new_password'
config['app']['debug'] = 'True'
# 새 섹션 추가
if not config.has_section('user'):
config.add_section('user')
config.set('user', 'name', 'HCCHOI')
with open('config.ini', 'w', encoding='utf-8') as f:
config.write(f)
print("설정이 수정되었습니다.")
이처럼 기존 값은 바로 수정할 수 있고,
새로운 섹션을 add_section()으로 추가할 수도 있습니다.
🚀 5️⃣ 전체 예제 코드 (읽기 + 쓰기 + 수정)
아래 예제는 ini 파일을 생성, 읽기, 수정까지 한 번에 실행하는 완전한 코드입니다.
import configparser
import os
CONFIG_FILE = 'config.ini'
def create_default_config():
config = configparser.ConfigParser()
config['database'] = {'host':'localhost','user':'root','password':'1234','port':'3306'}
config['app'] = {'debug':'True','version':'1.0.0'}
with open(CONFIG_FILE, 'w', encoding='utf-8') as f:
config.write(f)
def read_config():
config = configparser.ConfigParser()
config.read(CONFIG_FILE, encoding='utf-8')
print("[database]", dict(config['database']))
print("[app]", dict(config['app']))
def update_config():
config = configparser.ConfigParser()
config.read(CONFIG_FILE, encoding='utf-8')
config['database']['password'] = 'new_password'
config['app']['debug'] = 'False'
if not config.has_section('user'):
config.add_section('user')
config['user']['name'] = 'HCCHOI'
with open(CONFIG_FILE, 'w', encoding='utf-8') as f:
config.write(f)
if __name__ == '__main__':
if not os.path.exists(CONFIG_FILE):
create_default_config()
read_config()
update_config()
read_config()
🧩 6️⃣ 실행 결과
[+] 기본 config.ini 파일이 생성되었습니다.
[database] {'host': 'localhost', 'user': 'root', 'password': '1234', 'port': '3306'}
[app] {'debug': 'True', 'version': '1.0.0'}
설정이 수정되었습니다.
[database] {'host': 'localhost', 'user': 'root', 'password': 'new_password', 'port': '3306'}
[app] {'debug': 'False', 'version': '1.0.0'}
[user] {'name': 'HCCHOI'}
✅ 마무리
configparser는 별도 라이브러리 설치가 필요 없으며,
가볍고 직관적인 방식으로 설정값을 관리할 수 있는 강력한 도구입니다.
특히 파이썬 프로그램의 환경설정, 서버 설정, 데이터베이스 연결정보 관리 등에 많이 활용됩니다.
환경설정을 코드에서 분리하면 프로그램의 유지보수성과 재사용성이 크게 향상됩니다.
지금 바로 configparser를 활용해보세요!
