天天看點

Python ConfigParser:配置檔案變得簡單

作者:喜歡編碼的社畜
Python ConfigParser:配置檔案變得簡單

如果你想建構對更新穩健且易于管理的 Python 項目,ConfigParser 是一個不錯的選擇。

本篇文章将帶你了解如何使用 configparser 子產品為你的應用程式讀取和寫入配置檔案。

什麼是 Python ConfigParser 子產品?

配置檔案,俗稱配置檔案,常用于配置作業系統和應用程式的參數、選項和設定。

配置檔案存儲應用程式在啟動時讀取并用作其邏輯的一部分的鍵值對。

ConfigParser 是一個 Python 子產品,它允許以簡單的方式建立配置檔案。使用 ConfigParser,你還可以讀取或更新配置檔案的内容。使用 ConfigParser 建立的配置檔案的結構類似于 Microsoft Windows INI 檔案的結構。

将配置與代碼分離将為你省去從頭開始編譯和重新部署代碼以進行配置更改的麻煩。

如何使用 Python ConfigParser 編寫 INI 配置檔案

讓我們看一個簡單的配置檔案,如下所示。将其儲存在你的機器上名為sample_config.ini的檔案中。

[DEFAULT]
serverthreads = 45
content_type = text/html
content_length = 1024
autoscaling = no
[website_name.org]
username = your_name
login_mail = your_mail
[private.data.com]
password = secret_password
autoscaling = yes
           

在配置檔案中,你将在方括号中看到一個部分的名稱。節是配置檔案的基礎。

在每個部分下,鍵值對用指派符号“=”分隔。每個部分下的每個鍵值都必須是唯一的。

現在讓我們看看如何使用 configparser 建立這個配置檔案:

import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = { 'serverthreads' : 45, 'content_type' : 'text/html', 'content_length' : 1024 }
config['DEFAULT']['autoscaling'] = 'no'
config['website_name.org'] = dict()
config['website_name.org']['Username'] = 'your_name' 
config['website_name.org']['login_mail'] = 'your_mail'
config['private.data.com'] = {}
private = config['private.data.com']
private['Password'] = 'secret_password'
private['autoscaling'] = 'yes'
with open('generated_config.ini', 'w') as configfile:
    config.write(configfile)           

上面的代碼示例建立一個名為generate_config.ini的配置檔案。

Python 如何處理配置檔案

從上一節的示例中可以看出,你可以像處理字典一樣處理配置檔案。

但是,重要的是要注意差別……

配置部分下的所有鍵都不區分大小寫:你可以通過驗證以下表達式是否都傳回布爾值True來确認這一點。

你可以在前面生成配置檔案的 Python 代碼的末尾添加以下代碼。

print('ServerThreads' in config['DEFAULT'])
print('serverthreads' in config['DEFAULT'])
[output]
True
True           

如何使用 Python ConfigParser 讀取 INI 配置檔案

現在我們知道如何建立配置檔案,是時候學習如何讀取配置檔案了。

我們将使用 Python shell 來幫助我們輕松地測試不同的表達式。

你可以簡單地從初始化配置解析器開始。請注意,在不讀取任何配置檔案的情況下,配置對象會傳回一個空的部分清單。

import configparser
config = configparser.ConfigParser()
config.sections()           

現在使用 config 對象的 read 方法來讀取我們建立的配置檔案的内容:

config.read('generated_config.ini')            

然後,你可以按如下方式擷取部分名稱,盡管 DEFAULT 部分不會顯示在清單中:

config.sections()           

運作輸出:

Python ConfigParser:配置檔案變得簡單

從 INI 檔案中讀取配置檔案後,讓我們對配置檔案執行一些判斷語句

import configparser
config = configparser.ConfigParser()
config.read('generated_config.ini')
'unknown_property' in config
'your_name' in config['website_name.org']['username']
config['private.data.com']['password']
for key in config['DEFAULT']:
    print(key)           

運作輸出:

Python ConfigParser:配置檔案變得簡單

如何使用 ConfigParser 從配置檔案中擷取值

與字典類似,你可以使用get() 方法來檢索與鍵對應的值。

import configparser
config = configparser.ConfigParser()
config.read('generated_config.ini')
website = config['website_name.org']
mail = website.get('login_mail')
print(mail)           

運作輸出:

Python ConfigParser:配置檔案變得簡單

此外,get() 方法還允許一個回退值,如果在該部分下找不到請求的鍵,則傳回一個值:

website.get('login_date', fallback='No login_date found')            
Python ConfigParser:配置檔案變得簡單

重要的是要注意 DEFAULT 部分與其他部分相比具有層次優勢,并且與 DEFAULT 部分中的鍵對應的值将優先于備用值

website.get('content_type', fallback='No login_date found')            
Python ConfigParser:配置檔案變得簡單

使用 Python ConfigParser 更新配置檔案中的值

使用 configparser 更新配置檔案中的鍵名

import configparser
config = configparser.ConfigParser()
config.read('generated_config.ini')
config['private.data.com']['password'] = 'new_password'
config['website_name.org']['login_date'] = 'new_date'
config['new_section'] = {'user_port': 4098, 'user_request': 'yes'}
with open('generated_config.ini', 'w') as configfile:
     config.write(configfile)

           

運作檢視一下檔案是否更新

Python ConfigParser:配置檔案變得簡單

結論

在本篇文章中,你學習了:

  • 什麼是配置檔案。
  • Python configparser 子產品如何讓你讀取、寫入和更新配置檔案。

使用 configparser,你現在知道如何簡化管理應用程式配置的方式。

如果你發現我的任何文章有幫助或有用,麻煩點贊或者轉發。 謝謝!