【Python】設定ファイルを作成・読み込みしてみよう!

Pythonロゴ

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環境にアップしております。
下記からダウンロードいただけます。

参考 config.py スクリプトGitHub python-beginner