在 Python 中讀寫 INI 檔案

Vaibhav Vaibhav 2022年5月17日
在 Python 中讀寫 INI 檔案

INI 檔案是計算機軟體的配置檔案。

它包含表示屬性及其值的鍵值對。這些鍵值對按部分組織。

INI 檔案的副檔名為 .ini。Microsoft Windows 和基於 Microsoft Windows 的應用程式使用 INI 檔案,該軟體使用 INI 檔案來儲存其配置。

Python 是一種強大且通用的程式語言,可以構建桌面應用程式。由於桌面應用程式包括基於 Microsoft Windows 的應用程式和軟體,Python 開發人員應該使用 INI 檔案來儲存配置並在必要時讀取它們。

本文將教授如何使用 Python 讀寫 INI 檔案。

用 Python 讀寫 INI 檔案

要讀取和寫入 INI 檔案,我們可以使用 configparser 模組。該模組是 Python 標準庫的一部分,用於管理 Microsoft Windows 中的 INI 檔案。

這個模組有一個類 ConfigParser 包含所有的實用程式來玩 INI 檔案。我們可以將此模組用於我們的用例。

讓我們通過一個簡單的例子來了解這個庫的用法。請參閱以下 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 異常。這就是函式呼叫被 tryexcept 塊包圍的原因。

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() 函式需要三個引數,即 sectionoptionvalue。這意味著將在 section 下新增一個鍵值對,其中鍵是 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

它會在部分下找到選項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