Python入門から応用までの学習サイト


設定ファイル (ConfigParser)

Pythonにはとても便利な設定ファイル読み書き機能があります。決められた書式に従って記述することで、容易に設定値を得ることができます。

Windowsのiniファイルのような構造で保存します。まずは設定ファイルそのものを作ってみましょう。


-- ファイル名:config.ini --

01# コメントアウトも出来ます
02[settings]
03host = localhost
04port = 12345
05 
06# 「 = 」前後にスペースがあってもなくても問題なし
07[system]
08os=Windows
09version=8
10path=
11 
12# 区切りは「 = 」でも「 : 」可
13[user]
14name     : python-izm
15password : 0000
16mail     : mail@example.com

ハイライトされている部分がセクションで、セクション名を「 [] 」(大カッコ)で囲みます。セクション配下に「オプション名=値」という書式でエントリを追加していく形です。「config.ini」というファイル名で作業ディレクトリへ保存しましょう(ファイルの拡張子はiniでなくても構いません)。


次は読み込みです。

01# -*- coding: utf-8 -*-
02 
03import ConfigParser
04 
05 
06inifile = ConfigParser.SafeConfigParser()
07inifile.read('./config.ini')
08 
09print inifile.get('settings', 'host')
10print inifile.get('settings', 'port')
11 
12print inifile.get('system', 'os')
13print inifile.get('system', 'version')
14print inifile.get('system', 'path')
15 
16print inifile.get('user', 'name')
17print inifile.get('user', 'password')
18print inifile.get('user', 'mail')

--実行結果--

localhost
12345
Windows
8

python-izm
0000
mail@example.com


「ConfigParser」モジュールより「SafeConfigParser」クラスを使用します。7行目でファイルパスを指定し、設定ファイルの読み込みを行っています。

01# -*- coding: utf-8 -*-
02 
03import ConfigParser
04 
05 
06inifile = ConfigParser.SafeConfigParser()
07inifile.read('./config.ini')
08 
09print inifile.get('settings', 'host')
10print inifile.get('settings', 'port')
11 
12print inifile.get('system', 'os')
13print inifile.get('system', 'version')
14print inifile.get('system', 'path')
15 
16print inifile.get('user', 'name')
17print inifile.get('user', 'password')
18print inifile.get('user', 'mail')


「get」の引数に、セクション名とオプション名を指定してください。それに対応した設定値が返されます。

01# -*- coding: utf-8 -*-
02 
03import ConfigParser
04 
05 
06inifile = ConfigParser.SafeConfigParser()
07inifile.read('./config.ini')
08 
09print inifile.get('settings', 'host')
10print inifile.get('settings', 'port')
11 
12print inifile.get('system', 'os')
13print inifile.get('system', 'version')
14print inifile.get('system', 'path')
15 
16print inifile.get('user', 'name')
17print inifile.get('user', 'password')
18print inifile.get('user', 'mail')


設定ファイル内に日本語(マルチバイト文字列)を含む場合はエンコードに気を付けなければなりません。config.ini は UTF-8 で保存してください。


-- ファイル名:config.ini(UTF-8)--

1[ユーザー]
2name      = python-izm
3name_kana = ぱいそんいずむ
4備考      = 管理者ユーザー


次は読み込みです。

01# -*- coding: utf-8 -*-
02 
03import ConfigParser
04 
05 
06inifile = ConfigParser.SafeConfigParser()
07inifile.read('./config.ini')
08 
09print inifile.get('ユーザー', 'name')
10print unicode(inifile.get('ユーザー', 'name_kana'), 'UTF-8')
11print unicode(inifile.get('ユーザー', '備考'), 'UTF-8')

--実行結果--

python-izm
ぱいそんいずむ
管理者ユーザー

例示の設定ファイルでは、セクション名とオプション名に日本語が含まれるものがあります。これらを取得する際に「 u'ユーザー' 」のような指定をしないように注意しましょう。ConfigParser.NoSectionError が発生します。


 
 
 
 
 

次はリストのソートを行います!




P  R



入門 Python 3




Python
スタートブック




みんなのPython
第4版




退屈なことは
Pythonにやらせよう




ゼロから作るDeep Learning
Pythonで学ぶ
ディープラーニングの
理論と実装