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'>