設定ファイル (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 が発生します。
次はリストのソートを行います!