目次
はじめに
Windows10
Docker Desktop
Python 3.11.0
検証環境について
Pythonを利用するにあたって、Dockerに最新のPythonイメージをダウンロードしてコンテナとして起動します。
はじめに プログラミングを行う際に実行環境を構築する必要がありますが、普段利用しているローカルPCに直接インストールしてしまっては、トライアンドエラーを繰り返すうちに不要なアプリケーションが積み重なり動作が不安定にな[…]
はじめに これまでDockerで仮想環境を作成して開発環境を簡単に構築する方法をまとめてきましたが、実際のサービスとしてプログラミング開発を行うとなった場合にコンテナ一つで進めるのはまれです。 例えば、このブログは[…]
はじめに 皆さんはプログラミングを行う際にエディターは何を使っていますでしょうか? 秀丸エディタ?、NotePad++?、サクラエディタ?、それともメモ帳でしょうか? Linuxの人はviやvim、emacsなど[…]
外部ファイルによる設定ファイルについて
はじめにの通り、設定値を外部ファイルにもつ利点はありなるべくそうしたほうが良いのですが、Pythonで設定ファイルを読み込む方法としては3種類あります。
- JSONファイルを読み込む
- INIファイルを読み込む
- Pythonファイルを読み込む
順番に見ていきます。
JSONファイルを読み込む
JSON形式のファイルは汎用性が高く、データを構造的に保持できるので保守性が高いのが特徴です。
設定ファイル(.json)
まずは設定ファイルとしてjsonファイルを用意します。
{
"int": 100,
"str": "Hello World!",
"dic": ["dic1", "dic2"]
}
特徴としては、整数型や文字列型、辞書型など型を指定して設定値を定義できることです。そのため呼び出し先のプログラムでキャスト(型変換)する必要がありません。
Pythonファイル(.json)
それではPythonからjsonでの設定ファイルを呼び出す方法を見てみましょう。
# jsonライブラリをインポート
import json
# jsonファイルを読み込む
appsetting = json.load(open('settings.json', 'r'))
print(appsetting["int"]+1)
print(appsetting["str"])
print(appsetting["dic"])
最初にjsonファイルを扱う際は、jsonライブラリをインポートする必要があります。
5行目でsettings.jsonファイルを読み込んでappsettingという変数に代入しています。
この場合、設定ファイルはソースコードと同じ階層に配置しています。
python json_test.py
101
Hello World!
['dic1', 'dic2']
型に合わせた内容が出力されていることが確認できます。
INIファイルを読み込む
.iniファイルから設定値を読み込む際は、ConfigPaserというライブラリを利用します。
設定ファイル(.ini)
まずは設定ファイルとして.iniファイルを用意します。
[DEFAULT]
val1 = AAAA
val2 = 100
val3 = ++++
[dev]
val1 = BBBB
val2 = 200
val3 = ----
[prd]
val1 = CCCC
特徴としては、同じ設定項目でも環境依存で値が変わる場合に、グループごとに別の値を設定することができる点です。
今回の例では、DEFAULT、dev、prdという3つのグループで値を設定しています。
DEFAULT以外はすべて定義する必要はなく、定義した設定項目のみ上書きされます。
Pythonファイル(.ini)
それではPythonから.iniでの設定ファイルを呼び出す方法を見てみましょう。
# ConfigParserライブラリをインポート
import configparser
# iniファイルを読み込む
appsetting = configparser.ConfigParser()
appsetting.read('settings.ini')
print('# dev の設定値')
print(appsetting.get('dev', 'val1'))
print(appsetting.get('dev', 'val2'))
print(appsetting.get('dev', 'val3'))
print('# prd の設定値')
prd = appsetting['prd']
print(prd.get('val1'))
print(prd.get('val2'))
print(prd.get('val3'))
最初にiniファイルを扱う際は、ConfigParserライブラリをインポートする必要があります。
5,6行目でsettings.iniファイルを読み込んでappsettingという変数に代入しています。
この場合、設定ファイルはソースコードと同じ階層に配置しています。
appsetting.getの第一引数で取得するグループ名を指定します。第二引数で取得する設定値の項目を指定します。
14行目のように取得したいグループの設定値のみを変数に代入しておくこともできます。
このようにしておくと、設定値を取得する際にグループを指定する必要がなくなります。
python ini_test.py
# dev の設定値
BBBB
200
----
# prd の設定値
CCCC
100
++++
各グループに設定した設定値が出力されていることが確認できます。
また、prdグループについてはval1についてはprdで設定した値が上書きされて出力されており、val2,val3についてはDEFAULTの値が出力されています。
Pythonファイルを読み込む
.pyファイルから設定値を読み込む方法です。自ら作成した.pyファイルをライブラリとして利用するイメージです。
設定ファイル(.py)
まずは設定ファイルとしてsettings.pyファイルを用意します。
int = 100
str = "Hello World!"
dic = ["dic1", "dic2"]
settingsというClassを作るようなものなので、メンバーとして設定値を定義することができます。
jsonと同じで型を指定して設定することができます。
# settings.pyをインポート
import settings
print(settings.int+1)
print(settings.str)
print(settings.dic)
.pyで設定ファイルを作成する場合は、importするだけで値を使用することができます。
ファイル名が.pyとなるので、他のソースコードと紛らわしい場合もありますが、実際にソースコードの中からは利用しやすいですね。
python py_test.py
101
Hello World!
['dic1', 'dic2']
まとめ
出版社:インプレス
出版社:オライリージャパン; 第2版
出版社:技術評論社