プログラムにはいろんなオプションを設定することがあります。
その都度設定するようなものは、適時引数として値を渡せばいいのですが、長期に渡って使い続ける設定は別に設定して保存しておく必要があります。
サーバーの設定やMySQLの設定などを考えたらわかりますよね。
ここではPythonで.iniファイルを処理することができる標準モジュールのconfigparserを使って設定ファイルの操作をしてみます。
configparserで.iniファイルの書き込み
.iniファイルはWindowsでよくみかけるファイルです。
書式の設定は
[セクション名]
キー = 値
の形で定義されます。
configparserを使って、一般的なローカルサーバーの設定ファイルを書き込んでみましょう。次のようなコードで設定ファイルが作成されます。
import configparser
cfg = configparser.ConfigParser()
cfg['DEFAULT'] = {
'debug': True
}
cfg['web_server'] = {
'host': '127.0.0.1',
'port': 80
}
cfg['db_server'] = {
'host': '127.0.0.1',
'port': 3306
}
with open('config.ini', 'w') as config_file:
cfg.write(config_file)
configparserをインポートします。Configparser()をオブジェクト化してcfgとします。
セクション名’DEFAULT’、’web_server’、’db_server’を[]にそれぞれ入れて、値を辞書型で設定しています。
これをwith文で’config.ini’ファイルに書き込みます。
実行してみます。(ファイル名cfg.pyでAtomで実行しています)
ここでは同じ作業ディレクトリの位置に’config.ini’ファイルが作成されているはずです。このファイルを開くと上記右側のようにiniファイルの書式で書き込まれているのがわかります。
configparserで.iniファイルの読み込み
次はこの’config.ini’ファイルをconfigparserを使って読み込んでみましょう。
次のようなコードで設定ファイルを読み込むことができます。
import configparser
cfg = configparser.ConfigParser()
cfg.read('config.ini')
print(cfg['web_server'])
print(cfg['web_server']['host'])
print(cfg['web_server']['port'])
print(cfg['db_server'])
print(cfg['db_server']['host'])
print(cfg['db_server']['port'])
print(cfg['DEFAULT']['debug'])
書き込みと同様にConfigparser()をオブジェクト化しcfgとします。
そして’config.ini’ファイルをread()で読み込み、それぞれセクション名を指定してファイルの中身を出力しています。
実行するとこうなります。
設定ファイルの内容が読み込まれて、ターミナルに出力されているのがわかります。
このようにして、サーバーやアプリケーションの設定ファイルを読み書きすることができます。
まとめ
プログラムにはいろんなオプションを設定することがあります。サーバーやアプリケーションなどで長期に渡って使い続ける設定は別に設定して保存しておく必要があります。
Pythonでは標準モジュールのconfigparserを使って設定ファイルの形式である.iniファイルを処理することができます。