본문 바로가기
Python/파이썬 문법, 함수, 모듈 등

[Python] configparser 모듈을 사용하여 설정 파일에서 정보를 읽는 방법, 사용자에게 정보를 입력 받아 설정 파일에 저장하고 읽는 방법 configparser

by dong_su 2024. 5. 28.

설정 파일에서 정보를 읽으려면? ― configparser


ini 파일은 프로그램 정보를 저장하는 텍스트 문서로 [섹션]과 그 섹션에 해당하는 키 = 값으로 구성된다. 
configparser는 이러한 형식의 ini, txt 등의 파일을 처리할 때 사용하는 모듈이다.

 

예시) config.ini 파일

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = hg

[topsecret.server.com]
Port = 50022
ForwardX11 = no

 

사용법)

import configparser

config = configparser.ConfigParser()
config.read('config.ini', encoding='euc-kr')

# 섹션과 키를 사용하여 값 읽기
server_alive_interval = config['DEFAULT']['ServerAliveInterval']
print(server_alive_interval)  # 출력: 45

사용자에게 입력받아 설정 파일에 저장하고 읽는 함수

import configparser
import sys

def save_and_load_config():
    config = configparser.ConfigParser()

    # 사용자에게 입력 받는 부분
    value = input("멀티프로세스 개수를 입력해주세요: ").strip()

    # 입력 받은 값이 숫자 형태의 문자열인지 확인
    if not value.isdigit():
        print("잘못된 입력입니다. 숫자만 입력해야 합니다.")
        sys.exit()
	
    # 섹션과 그에 해당하는 키, 벨류 추가
    config.add_section("SECTION")
    config.set("SECTION", "processes", value)

    with open("config.txt", "w") as f:
        config.write(f)

    # 설정 파일을 다시 읽기
    config.read("config.txt")

    val = config["SECTION"]["processes"]

    return val

# 함수 실행 예제
if __name__ == "__main__":
    process_count = save_and_load_config()
    print(f"저장된 멀티프로세스 개수: {process_count}")

 

위 코드 중 config.write(f) 에 대한 추가 설명

config(configparser) 객체는 단순한 문자열이 아니라, 섹션과 키-값 쌍을 가진 객체이기 때문에 파일에 직접 쓸 수 없다. config.write(f) 메서드는 이 객체를 문자열로 변환하여 파일에 기록하는 역할을 함.