들어가며
- 11분 영상 시청시간이 아깝지 않다, 매우 효율적으로 핵심만 알려준다. 아래는 위에서 본 영상의 코드를 정리하였음.
Create Config File
# config_file_create.pyfrom configparser import ConfigParserconfig = ConfigParser()config['settings'] = {
'debug': 'true',
'secret_key': 'abc123',
'log_path': '/my_app/log'
}
config['db'] = {
'db_name': 'myapp_dev',
'db_host': 'localhost',
'db_port': '8889'
}
config['files'] = {
'use_cdn': 'false',
'images_path': '/my_app/images'
}with open('./dev.ini', 'w') as f:
config.write(f)
위의 코드를 실행하면 dev.ini
파일이 워킹 디랙토리에 만들어진다.
# dev.ini[settings]
debug = true
secret_key = abc123
log_path = /my_app/log
[db]
db_name = myapp_dev
db_host = localhost
db_port = 8889
[files]
use_cdn = false
images_path = /my_app/images
Read Config File
# config_file_read.pyfrom configparser import ConfigParser
parser = ConfigParser()
parser.read('dev.ini')print(parser.sections()) # ['settings', 'db', 'files']
print(parser.get('settings', 'secret_key')) # abc123
print(parser.options('settings')) # ['debug', 'secret_key', 'log_path']print('db' in parser) # Trueprint(parser.get('db', 'db_port'), type(parser.get('db', 'db_port'))) # 8889 <class 'str'>
print(int(parser.get('db', 'db_port'))) # 8889 (as int)
print(parser.getint('db', 'db_default_port', fallback=3306)) # 3306print(parser.getboolean('settings', 'debug', fallback=False)) # True
sections()
: 모든 section 리스트 반환get(<section_name>,<option_name>)
: 섹션의 옵션값 str로 반환getint()
,getfloat()
,getboolean()
: int/float/boolean으로 반환options(<section_name>)
:섹션 안의 선택가능한 옵션들반환in
: 섹션 존재 여부 확인
Using String Interpolation
# config_file_create.pyfrom configparser import ConfigParser
# ...
config['settings'] = {
'debug': 'true',
'secret_key': 'abc123',
'log_path': '/my_app/log',
'python_version': '3',
'packages_path': '/usr/local'
}
# ...
config['files'] = {
'use_cdn': 'false',
'images_path': '/my_app/images',
'python_path': '${settings:packages_path}/bin/python${settings:python_version}'
}
# ...
config['settings']
에python_version
&packages_path
를 추가config['files']
에python_path
를 추가- 여기서 표시 형식은
${<section name>:<option name>}
형태로 기입
# config_file_read.pyfrom configparser import ConfigParser, ExtendedInterpolation
parser = ConfigParser(interpolation=ExtendedInterpolation())
parser.read('dev.ini')
print(parser.get('files', 'python_path')) # /usr/local/bin/python3
- 여기서
ExtendedInterpolation
을 추가로import
해준다 ConfigParser(interpolation=ExtendedInterpolation())
변경