configparser로 *.ini 파일이나 *.cfg 파일과 같은 어떤 프로그램의 속성을 저장해놓는 파일을 관리할 수 있다.
그런데.... 아니 별것도 아닌게 지금 개발 중인 모니터링 프로그램에서 사용하려고 했더니만 안되는 것이 아닌가..
그래서 지금 퇴근길... 그것도 지하철 안에서 운좋게 앉아서 test파일을 만들고 사용해봤다..
응? 잘 되네??
뭐지 ㅋㅋㅋㅋ
근데 이놈 좀 웃긴게 있다...
외부 파일을 가져오기 위해 생성한 객체를 이용해 read를 하는데 path를 확인을 안한다......
즉, 저 'config.ini'가 잘못된 path라도 저기서 안걸리고 일단 통과된다 ㅋㅋㅋ
맵소사
포스팅을 한 김에 configparser 사용법을 몇가지 적어나 보자
● 설치
$ pip install configparser
● 선언
import configparser
config = configparser.ConfigParser()
● 파일 읽어오기
config.read([파일명])
config.read('config.ini', encoding='utf-8') #한글이 들어갈 경우 인코딩 값 역시 설정을 해줘야 오류가 안난다~
※ 파일명이 잘못되도 에러를 반환하지 않는다..ㅋ
● 파일 저장
with open('example.ini', 'w') as configfile:
config.write(configfile)
with ~ as ~는 파일을 열어 처리를 하거나 lock()을 쓸 때 매우 유용하다. 알아서 파일을 닫아주고, release해준다고 한다 ㅎㅎ
● 기타
#읽기
>>> config['SECTION']['KEY']
#쓰기
>>> config['SECTION']['KEY'] = value
#section 확인
>>> config.sections()
<Section: SECTION>
오류 확인
왼쪽에 있는 이미지가 현재 프로젝트의 tree구조이고, community.py에서 configparser를 사용하려고 한다.
그래서 read의 path를 config.ini로 했는데 sections()함수를 이용하여 key값을 확인해봤더니 텅텅 비어있는 것이 아니겠는가...?
왜그런가 봤더니... 가장 최초로 프로그램이 시작되는 main.py쪽에 config.ini 파일이 있는것...ㅋㅋ
그랬던 것이다. path의 기준은 처음 python 프로그램을 시작한 부분이 현재 작업 위치인 것이다.
즉, 이를 위해서는 절대 경로를 지정해주거나 작업 영역 기준으로 상대 경로를 지정하거나~ 작업 영역을 바꿔주면 된다.
작업 경로를 바꾸면 문제가 발생할 수 있으니 현재 작업 영역을 기준으로 config.ini 작업 영역을 설정해주자~
p.s. 하루 자고 일어나면 보이는게 퇴근 시간에는 절대 안보이더라 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ