Pythonには設定ファイルを扱うモジュールが用意されています。
今回は configparser と yaml モジュールを使用して設定ファイルの生成・読み込みを試してみます。
configparserについて
設定ファイル(iniファイル)を扱うモジュールになります。
ファイルの構造はWindowsの iniファイルと同じ形式になります。
設定ファイルの生成
configparserモジュールを使用して設定ファイルを生成します。
ファイルの保存はテキストファイルで利用したopen関数を利用します。
import configparser
config = configparser.ConfigParser()
config['BASE'] = {
'aaaa': '1111111',
'bbbb': '2222222'
}
config['TYPE'] = {
'string': 'abcdefg',
'number': 123456789,
'bool': False
}
with open('sample/config.ini', 'w') as file:
config.write(file)
実行をすると下記設定ファイルが保存されます。
設定ファイルはテキストエディタ等で変更をすることができます。
[BASE]
aaaa = 1111111
bbbb = 2222222
[TYPE]
string = abcdefg
number = 123456789
bool = False
設定ファイルの読み込み
import configparser
config = configparser.ConfigParser()
config.read('sample/config.ini')
print(config['BASE']['aaaa'])
print(config['TYPE']['number'])
# 結果
# 1111111
# 123456789
設定ファイルに値が存在しない場合、例外エラーが発生します。
get関数を利用する事で None で読み込むことができます。
# 下記の場合、値が存在しないためエラーが発生する
print(config['BASE']['abc'])
# 結果
# Traceback (most recent call last):
# File "/opt/project/config.py", line 35, in <module>
# print(config['BASE']['abc'])
# File "/usr/local/lib/python3.8/configparser.py", line 1254, in __getitem__
# raise KeyError(key)
# KeyError: 'abc'
# 下記の場合、値が存在しない場合Noneになります。
read_base = config['BASE']
print(read_base.get('abc'))
# 結果 None
yamlについて
YAML形式の設定ファイル(yaml, ymlファイル)を扱うモジュールになります。
規定のフォーマットで記載することで構造化されたデータの表現ができます。
設定ファイルの生成
yamlモジュールを使用して設定ファイルを生成します。
ファイルの保存はテキストファイルで利用したopen関数を利用します。
import yaml
config = {
'base': [
'aaaa',
'bbbb',
],
'type': [
'abcdefg'
]
}
with open('sample/config.yaml', 'w') as file:
yaml.dump(config, file)
実行をすると下記設定ファイルが保存されます。
設定ファイルはテキストエディタ等で変更をすることができます。
base:
- aaaa
- bbbb
type:
- abcdefg
設定ファイルの読み込み
import yaml
with open('sample/config.yaml', 'r') as file:
config = yaml.load(file, Loader=yaml.SafeLoader)
print(config['base'])
print(config['type'])
# 結果
# ['aaaa', 'bbbb']
# ['abcdefg']
サンプルプログラム
こちらの記事で作成したプログラムはGitHub環境にアップしております。
下記からダウンロードいただけます。