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


設定ファイル (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 が発生します。



Python
スタートブック


入門 Python 3


Effective
Python


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

 
 
 

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



確かな力が身につく
Python「超」入門




P  R