メモめもメモ

環境構築やプログラミングに関するメモ

Python3のconfigparserを使って設定ファイルを読み込む

pythonの標準ライブラリのひとつであるconfigparserを使うと、設定ファイルを簡単に扱えるようになります。 これを使うことで、ソースコード中に設定をべた書きするよりもユーザに優しいスクリプトが書けるでしょう。

設定ファイルの用意

test.confとして、下記のような設定ファイルを用意します。

[section1]
ipaddress = 192.168.0.1
port = 80
useSSL = false

[section2]
ipaddress : 10.20.30.40

この記事では触れませんが、configparserを使ってこのような設定ファイルを生成することもできます。

コード

設定ファイルtest.confを読み込むコードは下記のように書けます。

import configparser

cfg = configparser.ConfigParser()

# test.confから設定を読む
cfg.read("test.conf")

# 設定値をstr型で読み込む
ipaddress = cfg["section1"]["ipaddress"]
print("ipaddress = %s, type = %s" % (ipaddress, type(ipaddress)))

# 設定値をint型で読み込む
port = cfg.getint("section1", "port")
print("port = %d, type = %s" % (port, type(port)))

# 設定値をbool型で読み込む
useSSL = cfg.getboolean("section1", "useSSL")
print("useSSL = %s, type = %s" % (useSSL, type(useSSL)))

# section2から設定値を読み込む。区切り文字は=だけでなく:を使うことも可能。
ipaddress2 = cfg["section2"]["ipaddress"]
print("ipaddress2 = %s, type = %s" % (ipaddress2, type(ipaddress2)))

数値や真偽値に対してもgetintやgetbooleanを使わずに、cfg["セクション名"]["項目名"]と辞書のようにアクセスすることもできますが、その場合は文字列型として読んでしまうことに注意してください。

実行結果

ipaddress = 192.168.0.1, type = <class 'str'>
port = 80, type = <class 'int'>
useSSL = False, type = <class 'bool'>
ipaddress2 = 10.20.30.40, type = <class 'str'>