2017-01-13 4 views
0

ini 파일 :ConfigParser 중복 모든 키를 얻을

[main] 
key_1=1 
key_2=2 
key_1=3 

파이썬 :

config_parser = ConfigParser() 
config_parser.optionxform = str 
config_parser.read('config.ini') 
for section in config_parser.sections(): 
    for key in dict(config_parser.items(section)): 
     print key 

결과 :

key_1 
key_2 

예상 결과 :

key_1 
key_2 
key_1 

어떻게 이러한 결과를 얻을 수 있습니까?

답변

1

이것은 파이썬 2에서 config 파서가 작동하는 방식에 문제가 있습니다. 키 - 값 쌍은 사전으로 변환됩니다. 즉, 각 키는 고유해야합니다. 키가 여러 개인 경우 "마지막 값이 이깁니다".

DuplicateOptionError: While reading from 'config.ini' [line 4]: 
option 'key_1' in section 'main' already exists 

는 그래서 동일한 키를 여러 번 사용하지 마십시오 : 파이썬 3.5에서 예를 시도

,이 오류 메시지를 제공합니다.

다행히 그냥 파이썬 2의 백 포트가있다 :

pip install configparser 

이 라이브러리는 파이썬 2.6-3.5에 파이썬 3.5에서 업데이트 된 configparser을 제공합니다.

지금과 같이 사용

대부분의 구현은 주어진 이름으로 하나 개의 특성을 갖는 지원

중복 이름 :

from configparser import ConfigParser 

Wikipedia 중복에 대한 말씀입니다 섹션에서. 속성 이름의 두 번째 어커런스는 중단을 유발할 수 있으며, 무시할 수 있으며 값을 무시할 수도 있고 첫 번째 값을 무시하여 무시할 수도 있습니다. 일부 프로그램은 중복 속성 이름을 사용하여 다중 값 속성을 구현합니다.

동일한 이름의 여러 섹션 선언에 대한 해석도 다릅니다. 일부 구현에서 중복 섹션은 마치 연속적으로 발생하는 것처럼 해당 속성을 병합합니다. 다른 사람들은 INI 파일의 일부 측면을 중단하거나 무시할 수 있습니다.

+0

그것은 나를위한 해결책이 아닙니다. 이 작업의 주요 포인트는 구성 파일에서 중복을 확인하고이를 보여주는 것입니다. – oleksii

+0

중복이 오류로 간주됩니다. 잘못된 ini 파일을 검사하고 있습니까? –

+0

중복이 오류라고 가정합니다. 오류가 아닙니다. ConfigParser는 중복 된 항목을 건너 뛰고 마지막 키 - 값 쌍만 표시합니다. (Python 2.7에서) – oleksii