Pythonで設定ファイルを読み込み方法は、複数あります。
今回は、ConfigParserを使った方法を解説します。
本記事の内容
- ConfigParserとは?
- ConfigParserのシステム要件
- ConfigParserのインストール
- ConfigParserの動作確認
それでは、上記に沿って解説していきます。
ConfigParserとは?
ConfigParserとは、設定ファイルのパーサーになります。
パーサーと言う言葉は、普通にプログラムでは使われます。
一定の書式や文法に従って記述されたデータを解析し、プログラムで扱えるようなデータ構造の集合体に変換することをパースという。
パースを行うソフトやモジュールのことを「パーサー」と呼びます。
そして、ConfigParserはINIファイルと同じ構成のファイルをパースします。
次から次へと、わかったようなわからないようなキーワードが出てきますね。
INIファイルは、Windowsのソフトウェアでよく見られた設定ファイルです。
次のような形式を記述を見たことがありませんか?
[DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User = hg [topsecret.server.com] Port = 50022 ForwardX11 = no
このように記述されたファイルをINIファイルと言います。
ファイル名も「config.ini」というのが多いです。
ConfigParserを使えば、この見慣れた形式のINIファイルを読み込めるということです。
以上、ConfigParserについて説明しました。
次は、ConfigParserのシステム要件を確認します。
ConfigParserのシステム要件
ConfigParserは、Python標準ライブラリで用意されているモジュールです。
Pythonさえ動けば、OSは関係なく動きます。
サポートOSに関しては、以下を含むクロスプラットフォーム対応となります。
- Windows
- macOS
- Linux
そして、サポート対象となるPythonのバージョンは何でもOKです。
2系でも3系でも問題なく動きます。
以上、ConfigParserのシステム要件の説明でした。
次は、ConfigParserのインストールに関して確認します。
ConfigParserのインストール
ConfigParserは、Python標準ライブラリだと説明しました。
したがって、基本的にはインストール不要です。
しかし、ConfigParserをインストールするケースも存在します。
例えば、次の記事で解説したInstaPyです。
InstaPyをインストールすると、自動的にConfigParserがインストールされます。
InstaPy 0.6.13であれば、ConfigParser 3.8.1がインストールされています。
Pythonのバージョンが上がれば、ConfigParserもその分だけ強化されます。
その強化されたConfigParserを利用する場合に、明示的にライブラリとしてインストールします。
よって、ConfigParserをインストールすることもあり得ます。
ちなみに、現在のConfigParserの最新バージョンは、5.0.2となります。
この最新バージョンは、2021年5月1日に公開されています。
インストールする際は、次のコマンドを実行します。
pip install configparser
以上、ConfigParserのインストールについて説明しました。
最後に、ConfigParserの動作確認を行います。
ConfigParserの動作確認
まず、設定ファイルを用意します。
内容は、INIファイルの例で挙げたモノを使いましょう。
config.ini
[DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User = hg [topsecret.server.com] Port = 50022 ForwardX11 = no
上記のconfig.iniを読み込んでいきます。
import configparser config = configparser.ConfigParser() config.read("config.ini") print(config['bitbucket.org']['User']) topsecret = config['topsecret.server.com'] print(topsecret['Port'])
上記を実行すると、以下の結果となります。
hg 50022
[]セクションを利用して、変数をカテゴライズできますね。
あと、気を付けることは型になります。
ConfigParserにより取得した値は、すべて文字列扱いです。
そのため、型については自分で管理(型変換)する必要があります。
例えば、設定ファイル上の値を数値として扱いたい場合は次のように変換します。
port = int(topsecret['Port'])
取得した後に、型変換するのも全然OK。
ただ、ConfigParserは便利な関数が用意されています。
int型として、取得するという関数です。
port = topsecret.getint('Port')
上記のような使い方をします。
型指定で取得する関数は、以下の3つがあります。
- getint
- getboolean
- getfloat
他にも、ConfigParserには便利な使い方ができます。
でも、個人的には紹介してきた機能で十分に事足ります。
ConfigParserには、INI形式のファイルを作成する関数も備わっています。
でも、設定ファイルなんてプログラムで作るようなモノではないのですよね・・・
他に機能に興味がある場合、以下ページで確認できます。
Pyuthonドキュメント:ConfigParser
https://docs.python.org/ja/3/library/configparser.html
以上、ConfigParserの動作確認についての説明でした。