設定ファイル (ConfigParser)
Pythonにはとても便利な設定ファイル読み書き機能があります。決められた書式に従って記述することで、容易に設定値を得ることができます。
Windowsのiniファイルのような構造で保存します。まずは設定ファイルそのものを作ってみましょう。
-- ファイル名:config.ini --
# コメントアウトも出来ます [settings] host = localhost port = 12345 # 「 = 」前後にスペースがあってもなくても問題なし [system] os=Windows version=8 path= # 区切りは「 = 」でも「 : 」可 [user] name : python-izm password : 0000 mail : mail@example.com
ハイライトされている部分がセクションで、セクション名を「 [] 」(大カッコ)で囲みます。セクション配下に「オプション名=値」という書式でエントリを追加していく形です。「config.ini」というファイル名で作業ディレクトリへ保存しましょう(ファイルの拡張子はiniでなくても構いません)。
次は読み込みです。
# -*- coding: utf-8 -*-
import ConfigParser
inifile = ConfigParser.SafeConfigParser()
inifile.read('./config.ini')
print inifile.get('settings', 'host')
print inifile.get('settings', 'port')
print inifile.get('system', 'os')
print inifile.get('system', 'version')
print inifile.get('system', 'path')
print inifile.get('user', 'name')
print inifile.get('user', 'password')
print inifile.get('user', 'mail')
--実行結果--
localhost 12345 Windows 8 python-izm 0000 mail@example.com
「ConfigParser」モジュールより「SafeConfigParser」クラスを使用します。7行目でファイルパスを指定し、設定ファイルの読み込みを行っています。
# -*- coding: utf-8 -*-
import ConfigParser
inifile = ConfigParser.SafeConfigParser()
inifile.read('./config.ini')
print inifile.get('settings', 'host')
print inifile.get('settings', 'port')
print inifile.get('system', 'os')
print inifile.get('system', 'version')
print inifile.get('system', 'path')
print inifile.get('user', 'name')
print inifile.get('user', 'password')
print inifile.get('user', 'mail')
「get」の引数に、セクション名とオプション名を指定してください。それに対応した設定値が返されます。
# -*- coding: utf-8 -*-
import ConfigParser
inifile = ConfigParser.SafeConfigParser()
inifile.read('./config.ini')
print inifile.get('settings', 'host')
print inifile.get('settings', 'port')
print inifile.get('system', 'os')
print inifile.get('system', 'version')
print inifile.get('system', 'path')
print inifile.get('user', 'name')
print inifile.get('user', 'password')
print inifile.get('user', 'mail')
設定ファイル内に日本語(マルチバイト文字列)を含む場合はエンコードに気を付けなければなりません。config.ini は UTF-8 で保存してください。
-- ファイル名:config.ini(UTF-8)--
[ユーザー] name = python-izm name_kana = ぱいそんいずむ 備考 = 管理者ユーザー
次は読み込みです。
# -*- coding: utf-8 -*-
import ConfigParser
inifile = ConfigParser.SafeConfigParser()
inifile.read('./config.ini')
print inifile.get('ユーザー', 'name')
print unicode(inifile.get('ユーザー', 'name_kana'), 'UTF-8')
print unicode(inifile.get('ユーザー', '備考'), 'UTF-8')
--実行結果--
python-izm ぱいそんいずむ 管理者ユーザー
例示の設定ファイルでは、セクション名とオプション名に日本語が含まれるものがあります。これらを取得する際に「 u'ユーザー' 」のような指定をしないように注意しましょう。ConfigParser.NoSectionError が発生します。
次はリストのソートを行います!
