반응형
ConfigParser는 대문자 키를 읽고 소문자로 만듭니다.
흥미로운 관찰을 발견했습니다. 구성 파일 읽기 프로그램을 다음과 같이 작성했습니다.
import ConfigParser
class ConfReader(object):
ConfMap = dict()
def __init__(self):
self.config = ConfigParser.ConfigParser()
self.config.read('./Config.ini')
self.__loadConfigMap()
def __loadConfigMap(self):
for sec in self.config.sections():
for key,value in self.config.items(sec):
print 'key = ', key, 'Value = ', value
keyDict = str(sec) + '_' + str(key)
print 'keyDict = ' + keyDict
self.ConfMap[keyDict] = value
def getValue(self, key):
value = ''
try:
print ' Key = ', key
value = self.ConfMap[key]
except KeyError as KE:
print 'Key', KE , ' didn\'t found in configuration.'
return value
class MyConfReader(object):
objConfReader = ConfReader()
def main():
print MyConfReader().objConfReader.getValue('DB2.poolsize')
print MyConfReader().objConfReader.getValue('DB_NAME')
if __name__=='__main__':
main()
내 Config.ini 파일은 다음과 같습니다.
[DB]
HOST_NAME=localhost
NAME=temp
USER_NAME=postgres
PASSWORD=mandy
__loadConfigMap ()은 잘 작동합니다. 그러나 키와 값을 읽는 동안 키를 소문자로 만듭니다. 이유를 이해하지 못했습니다. 그 이유를 설명해 주시겠습니까?
ConfigParser.ConfigParser()
다음과 같이 ConfigParser.RawConfigParser()
작동하는 것으로 문서화 된 의 하위 클래스입니다 .
모든 옵션 이름은
optionxform()
메서드를 통해 전달됩니다 . 기본 구현은 옵션 이름을 소문자로 변환합니다.
이 모듈은 대소 문자를 구분하지 않고 구문 분석 될 것으로 예상되는 Windows INI 파일을 구문 분석하기 때문입니다.
RawConfigParser.optionxform()
함수 를 대체하여이 동작을 비활성화 할 수 있습니다 .
self.config = ConfigParser.ConfigParser()
self.config.optionxform = str
str
변경되지 않은 옵션을 통과합니다.
ReferenceURL : https://stackoverflow.com/questions/19359556/configparser-reads-capital-keys-and-make-them-lower-case
반응형
'Programing' 카테고리의 다른 글
UIButton의 iOS NSAttributedString (0) | 2021.01.07 |
---|---|
내 vim-airline 또는 vim-powerline을 어떻게 설정할 수 있습니까? (0) | 2021.01.07 |
FactoryBot : 동일한 객체를 여러 번 생성 (0) | 2021.01.06 |
SQL Server의 지정된 날짜에서 요일 이름 가져 오기 (0) | 2021.01.06 |
유닉스에서 파일의 마지막 문자를 제거하려면 어떻게해야합니까? (0) | 2021.01.06 |