설정 파일에서 정보를 읽으려면? ― 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) 메서드는 이 객체를 문자열로 변환하여 파일에 기록하는 역할을 함.