Pythonでiniファイルを読み込みする
iniファイルはアプリケーションやシステムの設定情報を保存するために広く使われているテキストベースのファイル形式で、読みやすく編集もしやすいという利点があります。
可読性と編集のしやすさ
iniファイルは、シンプルな「キー=値」のペアで構成されセクションを用いて関連する設定をグループ化することができます。例えば、アプリケーションの言語設定を変更する場合テキストエディタを開いて対応するキーの値を変更するだけで済むため専門的なツールや知識がなくても設定の変更や確認が可能です。
設定情報の柔軟な管理
iniファイルは、アプリケーションのユーザー設定、データベース接続情報、システムやネットワークの環境設定など、多岐にわたる情報を一つのファイルに集約して管理できる柔軟性を持っています。セクションを使って設定をカテゴリ別に整理できるため大量の設定情報でも管理しやすくなります。
プラットフォーム間の移植性
テキストベースであるため、Windows、Mac、Linuxなど、異なるオペレーティングシステム間での互換性が高いです。これによりアプリケーションやシステムを異なる環境に移植する際にも、設定情報の再利用が容易になります。開発者はプラットフォーム固有の設定方法に頼ることなく一貫した設定管理方法を採用できます。
アプリケーションの起動設定とネットワーク設定の管理
iniファイルではアプリケーションの起動パラメーターやネットワーク設定(例えば、IPアドレスやプロキシ設定)といった、システムの動作に必要な細かい設定も管理できます。これによりアプリケーションの動作環境を細かくカスタマイズし最適な状態で運用することが可能になります。
iniファイルはそのシンプルさから多種多様な用途で広く使われています。プログラムによってはより複雑な設定を必要とするためにXMLやJSONファイルを使用する場合もありますが、iniファイルは読み書きが容易であるため依然として人気があります。
本記事ではiniファイルを簡単に読み込みできるget_value関数を紹介します。
iniファイルへ書き込みする処理も追記しました。まとめ以降を参照してください。
Pythonでiniファイルを読み込みするサンプルコード
まずは、get_value関数のサンプルコードを紹介します。
import configparser
# INIファイル名を設定する
INI_FILE_NAME = 'config.ini'
def get_value(section, key):
"""
指定されたセクションとキーに対応するINIファイルの値を取得する。
Args:
section (str): セクション名
key (str): キー名
Returns:
str: セクションとキーに対応するINIファイルの値
"""
# ConfigParserオブジェクトを生成する
config = configparser.ConfigParser()
# INIファイルを読み込む
config.read(INI_FILE_NAME, encoding='utf-8')
# 指定されたセクションとキーに対応する値を返す
return config[section][key]
##############################################################
# 関数のテスト
if __name__ == "__main__":
log_filename = get_value('DEFAULT', 'logfilename')
log_file_size = get_value('DEFAULT', 'logfilesize')
db_path = get_value('DATABASE', 'dbpath')
print(log_filename)
print(log_file_size)
print(db_path)
上記のサンプルコードを使用して、iniファイルから値を取得する方法を示します。以下がサンプルのconfig.ini
ファイルです。
※プログラムと同じ階層のフォルダに配置してください。
[DEFAULT]
### log関連
#ファイル名
logfilename = debug.log
#ファイルサイズ byte
logfilesize = 10485760
#バックアップ世代数
logbackupcount = 5
#ログレベル DEBUG, INFO, WARNING, ERROR, CRITICAL
log_level = DEBUG
[DATABASE]
### sqlite3
dbpath = webdata.sqlite3
実行結果
上記のサンプルコードを実行すると、iniファイルに記載された値が取得可能です。実行結果の例を示します。
debug.log
10485760
webdata.sqlite3
まとめ
この記事ではPythonでiniファイルを読み込む方法を紹介しました。設定ファイルを使用することで、プログラムの設定値を柔軟に変更することができます。また、Pythonに標準で実装されているconfigparser
モジュールを利用することで、簡潔なコードでiniファイルの値を取得できます。
iniファイルを利用する機会があれば試してみてはいかがでしょうか。
Pythonでiniファイルへ書き込みするサンプルコード
iniファイルへ新たな値をセットしたい場合があると思いますので、put_value関数も作成しましたのでサンプルコードを紹介します。
import configparser
# INIファイル名を設定する
INI_FILE_NAME = 'config.ini'
def put_value(section, key, value):
"""
指定されたセクションとキーに対応する値をINIファイルに書き込む。
Args:
section (str): セクション名
key (str): キー名
value (str): 設定する値
"""
# ConfigParserオブジェクトを生成する
config = configparser.ConfigParser()
# INIファイルを読み込む
config.read(INI_FILE_NAME, encoding='utf-8')
# 指定されたセクションが存在しない場合は追加する
if not config.has_section(section):
config.add_section(section)
# セクションとキーに値を設定する
config.set(section, key, value)
# INIファイルに書き込む
with open(INI_FILE_NAME, 'w', encoding='utf-8') as configfile:
config.write(configfile)
# 関数のテスト
if __name__ == "__main__":
# 値を書き込むサンプル
put_value('test', 'code_default', '1')
# 値を書き込むサンプル
put_value('test', 'test_value', '1')
実行結果
上記のサンプルコードを実行すると、iniファイルに値が追記可能です。実行結果の例を示します。
[DEFAULT]
logfilename = debug.log
logfilesize = 10485760
logbackupcount = 5
log_level = DEBUG
[DATABASE]
dbpath = webdata.sqlite3
[test]
code_default = 1
test_value = 1
[test]セクションに、code_defaultとtest_valueが追加されます。
※iniファイル内に入れたコメントが消えてしまうので、そのあたりは注意事項となります。
コメント