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