INI 구성 파서
INI 파일은 섹션과 키-값 쌍으로 구성된 간단한 구성 형식으로, 역사적으로 Windows에서 사용되었으며 많은 애플리케이션(php.ini, my.cnf, setup.cfg)에서 여전히 흔합니다. 이 도구는 INI 구문을 파싱하고, 섹션과 속성을 표시하며, JSON으로 변환할 수 있습니다.
사양
주요 사용 사례
- php.ini 또는 MySQL my.cnf 구성 검사
- Python setup.cfg 또는 tox.ini 파일 파싱
- Git 구성 파일(.gitconfig) 검토
- Windows 애플리케이션 설정 디버깅
- 레거시 INI 구성을 JSON 또는 YAML로 변환
기능
- [section] 헤더와 key=value 쌍 파싱
- 주석 처리 (; 및 # 접두사)
- 이스케이프 시퀀스가 있는 인용된 값 지원
- 글로벌 속성 표시 (모든 섹션 이전)
- 프로그래밍 사용을 위해 JSON으로 변환
- 예쁘게 서식 지정된 뷰 모드
- 섹션별 주석 표시
- 잘못된 형식의 항목에 대한 파싱 경고
예제
데이터베이스 구성
사용해 보기 →일반적인 데이터베이스 구성 파일.
[database]
host=localhost
port=3306
name=myapp_db
user=admin
[cache]
enabled=true
ttl=3600
driver=redisPHP 구성
사용해 보기 →php.ini의 발췌.
; PHP Configuration
[PHP]
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 64M
[Date]
date.timezone = "America/New_York"팁
- 대부분의 구현에서 섹션 이름은 대소문자를 구분하지 않습니다.
- 특수 문자를 포함하는 값에는 따옴표를 사용하세요.
- 주석은 전통적으로 ;를 사용하지만 일부 파서는 #도 허용합니다.
- 같은 섹션의 중복 키는 파서에 따라 덮어쓰거나 배열을 생성할 수 있습니다.
이해하기 INI 구성 파서
INI 파일은 섹션(대괄호 안)과 키-값 쌍을 사용하는 간단한 구성 형식입니다. 공식적인 사양이 없음에도 불구하고, MS-DOS와 Windows 초기부터 널리 사용되어 왔습니다. PHP는 php.ini를, Git은 .gitconfig(INI 스타일)을, Windows 애플리케이션은 .ini 파일을 사용하며, 많은 레거시 시스템이 이 형식에 의존합니다.
기본 구조는 [section] 헤더 아래에 key=value 쌍을 그룹화합니다. 값은 일반적으로 문자열이지만, 일부 파서는 숫자와 불리언을 해석합니다. 주석은 세미콜론(;) 또는 해시(#)를 사용합니다. 여러 줄 값, 중첩 섹션, 이스케이프 시퀀스는 권위 있는 표준이 없기 때문에 구현마다 다릅니다.
INI 파일은 평탄한 키-값 형식(.env 파일과 같은)과 구조화된 형식(TOML 및 YAML과 같은) 사이의 간극을 채웁니다. 중첩된 데이터 구조의 복잡성 없이 섹션 수준 구성을 제공합니다. 논리적 그룹이 있는 간단한 애플리케이션 구성에 INI는 여전히 실용적인 선택입니다.
표준화의 부재가 INI의 주요 약점입니다. 다른 파서들이 주석 문자, 키의 대소문자 구분 여부, 중복 키와 섹션의 처리 방법, 값이 여러 줄에 걸칠 수 있는지에 대해 동의하지 않습니다. 새 프로젝트를 시작할 때는 공식 사양과 더 풍부한 데이터 타입을 가진 TOML이 일반적으로 더 나은 선택입니다.
TOML은 공식 사양을 가진 INI의 최신 대체제로 설계되었습니다. INI에 완전히 없는 네이티브 데이터 타입(정수, 부동소수점, 불리언, 날짜, 배열), 중첩 테이블, 테이블 배열, 여러 줄 문자열을 추가합니다. 새 프로젝트에는 TOML이 더 나은 선택이며, INI는 주로 기존 구성 파일과의 레거시 호환성에 관련됩니다.
키 대소문자 구분은 구현에 따라 다릅니다. Windows INI 함수는 대소문자를 구분하지 않고, Python의 configparser는 기본적으로 키에 대해 대소문자를 구분하지 않으며, PHP의 parse_ini_file은 키에 대해 대소문자를 구분하지만 섹션에 대해서는 구분하지 않고, Git config는 섹션과 키 이름 모두에 대해 대소문자를 구분하지 않습니다. 항상 특정 파서의 문서를 확인하세요. 값의 특수 문자 처리도 마찬가지로 일관성이 없습니다. 일부 파서는 큰따옴표로 값 인용을 지원하고, 일부는 이스케이프 시퀀스를 지원하며, 일부는 등호 뒤의 모든 것을 리터럴 값으로 처리합니다. 특수 문자가 필요한 경우 특정 파서의 동작을 확인하거나 TOML로의 마이그레이션을 고려하세요.