Python での INI ファイルの読み取りと書き込み

Vaibhav Vaibhav 2022年4月14日
Python での INI ファイルの読み取りと書き込み

INI ファイルは、コンピュータソフトウェアの構成ファイルです。

これには、プロパティとその値を表すキーと値のペアが含まれています。これらのキーと値のペアは、セクションの下に編成されています。

INI ファイルの拡張子は .ini です。INI ファイルは MicrosoftWindows および MicrosoftWindows ベースのアプリケーションで使用され、ソフトウェアは INI ファイルを使用して構成を保存します。

Python は、デスクトップアプリケーションを構築できる堅牢で用途の広いプログラミング言語です。デスクトップアプリケーションには MicrosoftWindows ベースのアプリケーションとソフトウェアが含まれているため、Python 開発者は INI ファイルを使用して構成を保存し、必要に応じてそれらを読み取る必要があります。

この記事では、Python を使用して INI ファイルを読み書きする方法を説明します。

Python での INI ファイルの読み取りと書き込み

INI ファイルの読み取りと書き込みには、configparser モジュールを使用できます。このモジュールは Python の標準ライブラリの一部であり、MicrosoftWindows にある INI ファイルを管理するために構築されています。

このモジュールには、INI ファイルを操作するためのすべてのユーティリティを含むクラス ConfigParser があります。このモジュールをユースケースに使用できます。

簡単な例を使用して、このライブラリの使用法を理解しましょう。これについては、次の Python コードを参照してください。

import configparser

filename = "file.ini"

# Writing Data
config = configparser.ConfigParser()
config.read(filename)

try:
    config.add_section("SETTINGS")
except configparser.DuplicateSectionError:
    pass

config.set("SETTINGS", "time", "utc")
config.set("SETTINGS", "time_format", "24h")
config.set("SETTINGS", "language", "english")
config.set("SETTINGS", "testing", "false")
config.set("SETTINGS", "production", "true")

with open(filename, "w") as config_file:
    config.write(config_file)

# Reading Data
config.read(filename)
keys = ["time", "time_format", "language", "testing", "production"]
for key in keys:
    try:
        value = config.get("SETTINGS", key)
        print(f"{key}:", value)
    except configparser.NoOptionError:
        print(f"No option '{key}' in section 'SETTINGS'")

出力:

time: utc
time_format: 24h
language: english
testing: false
production: true

Python コードの説明

Python スクリプトは、最初に ConfigParser クラスのオブジェクトを作成し、filename で指定された INI ファイルを読み取ります。指定されたパスにファイルが存在しなくても問題はありません。

try:
    config.add_section("SETTINGS")
except configparser.DuplicateSectionError:
    pass

次に、add_section() メソッドを使用して、INI ファイルに SETTINGS セクションを作成しようとします。

セクションがすでに INI ファイルに存在する場合、add_section() メソッドは configparser.DuplicateSectionError 例外をスローします。そのため、関数呼び出しは try ブロックと except ブロックに囲まれています。

config.set("SETTINGS", "time", "utc")
config.set("SETTINGS", "time_format", "24h")
config.set("SETTINGS", "language", "english")
config.set("SETTINGS", "testing", "false")
config.set("SETTINGS", "production", "true")

次に、set() 関数を使用して、INI ファイルにデータを書き込みます。

set() 関数は、sectionoption、および value の 3つの引数を要求します。これは、キーと値のペアがセクションの下に追加されることを意味します。ここで、キーは option であり、値は value です。

上記の Python スクリプトは、5 のようなペアを追加します。

with open(filename, "w") as config_file:
    config.write(config_file)

次に、INI ファイルが開かれ、configparser ライブラリの write() メソッドを使用してデータが書き込まれ、最後に保存されます。

config.read(filename)
keys = ["time", "time_format", "language", "testing", "production"]
for key in keys:
    try:
        value = config.get("SETTINGS", key)
        print(f"{key}:", value)
    except configparser.NoOptionError:
        print(f"No option '{key}' in section 'SETTINGS'")

Python スクリプトは、INI ファイルを再度読み取り、INI ファイルの内容を読み取り、get() メソッドを使用して、書き込まれたすべての情報を取得します。get() メソッドは、sectionoption の 2つのパラメーターを受け入れます。

section の下に option があります。get() メソッドは、指定されたセクションで指定されたオプションが見つからない場合、NoOptionError 例外をスローします。

したがって、実行時の例外を回避するために、get() メソッド呼び出しと print() ステートメントは try...except ブロック内に囲まれています。

著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

関連記事 - Python File