どうも!リョクちゃです。
今回は、Pythonでiniファイルに書込まれている値(設定値)を読込む方法を紹介していきます。
アプリケーションを作成していくうえで、iniファイルは必要なスキルなので、
覚えておくといいです!
ちなみに前回はこちらになります。
目次
iniファイル = 設定ファイル
主にWindowsで使用され、テキストファイルの一種となります。
アプリケーションの設定などを書き込んだ設定ファイルになります。
例えば、画面のサイズやアプリケーションがファイルを作成する機能を持っていたら、
そのファイルの作成場所などを設定ファイルに書き込んでおくことで、
コードをいじらなくても、設定ファイルを参照することで、
変更が行えたりと利便性があります。
iniファイルは、テキストファイルと違って、拡張子が”.ini”になります。
最近では、設定値を収めておくのに、JSONやXMLといったデータ形式の、
ファイルを取り扱うことも多く見受けられています。
それぞれにメリットデメリットがあるので、必要に応じて
iniファイルの用意をする
さっそく、今回使うiniファイルの用意をしていきます。
今回は、VSCodeを使って説明していきます。
まず、VSCodeを起動します。
起動したら、メインで使用されているワークスペースもしくはサブのワークスペースに
今回のテスト用のフォルダをローカルの適当な場所に作成しておき、追加しておきます。
※筆者はデスクトップ上にTestConfigIniというフォルダを作成し、
WorkSpaceに追加しています。
追加出来たら、追加したフォルダに今回、
対象となるテスト用のiniファイルを新たに作成します。
TestConfigIniの中に、Config.iniというファイルを作成しました。
※保存の際に文字コードを決める場合は、UTF-8で設定をしておきます。
デフォルトでは、UTF-8だと思います。
作成したら、Config.iniファイルに以下のように記述します。
先ほど記述した内容がなにを意味するのか、簡単に構成を図示しておきます。
キーに対してバリューがあるといった感じです。
これはPythonの辞書型(dictionary)と似たような形ですね。
次のセクションでは、作成したiniファイルをPythonで読み込んでいきます。
Pythonでiniファイルを読込む
iniファイルをPythonで読み込むには、”configparser“といわれるモジュールを使うことで
簡単に読み込むことができます。
使い方
configparserモジュールを呼び出しています。
モジュールの設定をしたら、configparserモジュールからConfigParserクラスを呼び出し、
変数に代入します。
1 |
config_ini = config.ConfigParser() |
ここでは、config_ini変数にConfigparserクラスを設定しています。
config_ini変数を使って、iniファイルを読込む準備をしていきます。
読込むには、Configparserクラスのreadメソッドを使用します。
readメソッドの引数には、主に
- 引数1 : 読み込みたいiniファイルのパス
- 引数2 : iniファイルの文字コード
を指定します。
config_ini変数を使って、readメソッドを呼び出すと以下のようになります。
1 |
config_ini.read(<iniファイルのパス>, <文字コード>) |
引数1で指定したパスのiniファイルを読込んだ結果が、config_iniに代入されます。
ここから、Config.iniファイルのTESTセクションからkeyの値を読み取ります。
1 |
print(config_ini["TEST"]["key"]) |
実行すると、
出力には、りんごと表示されます。
config_ini[セクション名][キー名]で指定した、
セクションとキーの値を取り出すことができます。
Python3.0系では……他の方法も
実はPython3.0系では、他にの方法もあり、以下の記述でも
iniファイルから指定したセクション、キーで値が取り出せます。
1 |
print(config_ini.get("セクション名", "キー名")) |
Configparserクラスのgetメソッドを使うことで、同様に読み込むことができます。
まとめ
Pythonでiniファイルを読込む方法を紹介していきました。
configparserモジュールは非常に便利なので、
もしiniファイルを使う際は活用してみて下さい。
書込みもconfigparserを用いて可能なので、次回紹介していきます。
最後までお読みいただきありがとうございます。
・こちらの書籍を参考にPythonの理解を深めました。