首頁 > 軟體

Python中ConfigParser模組範例詳解

2023-01-16 14:01:39

1. 簡介

有些時候在專案中,使用組態檔來設定一些靈活的引數是比較常見的事,因為這會使得程式碼的維護變得更方便。而ini組態檔是比較常用的一種,今天介紹用ConfigParser模組來解析ini組態檔。

2. ini組態檔格式

# 這是註釋
; 這也是註釋
[section1]
name = wang
age = 18
heigth = 180

[section2]
name = python
age = 19

3. 讀取ini檔案

configparser模組為Python自帶模組不需要單獨安裝,但要注意,在Python3中的匯入方式與Python2的有點小區別

# python2
import ConfigParser

# python3
import configparser

3.1 初始化物件並讀取檔案

import configparser
import os
# 建立物件
config = configparser.ConfigParser()
dirPath = os.path.dirname(os.path.realpath(__file__))
inipath = os.path.join(dirPath,'test.ini')
# 讀取組態檔,如果組態檔不存在則建立
config.read(inipath,encoding='utf-8')

3.2 獲取並列印所有節點名稱

secs = config.sections()
print(secs)

輸出結果:

['section1', 'section2']

3.3 獲取指定節點的所有key

option = config.options('section1')
print(option)

輸出結果:

['name', 'age', 'heigth']

3.4 獲取指定節點的鍵值對

item_list = config.items('section2')
print(item_list)

輸出結果:

[('name', 'python'), ('age', '19')]

3.5 獲取指定節點的指定key的value

val = config.get('section1','age')
print('section1的age值為:',val)

輸出結果:

section1的age值為: 18

3.6 將獲取到值轉換為intbool浮點型

Attributes = config.getint('section2','age')
print(type(config.get('section2','age')))
print(type(Attributes))

# Attributes2 = config.getboolean('section2','age')
# Attributes3 = config.getfloat('section2','age')

輸出結果:

<class 'str'>
<class 'int'>

3.7 檢查section或option是否存在,返回bool值

has_sec = config.has_section('section1')
print(has_sec)

has_opt = config.has_option('section1','name')
print(has_opt)

輸出結果:

TrueTrue

3.8 新增一個section和option

if not config.has_section('node1'):
    config.add_section('node1')

# 不需判斷key存不存在,如果key不存在則新增,若已存在,則修改value
config.set('section1','weight','100')  

# 將新增的節點node1寫入組態檔
config.write(open(inipath,'w'))
print(config.sections())
print(config.options('section1'))

輸出結果:

['section1', 'section2', 'node1']
[('name', 'wang'), ('age', '18'), ('heigth', '180'), ('weight', '100')]

3.9 刪除section和option

# 刪除option
print('刪除前的option:',config.items('node1'))
config.remove_option('node1','dd')
# 將刪除節點node1後的內容寫回組態檔
config.write(open(inipath,'w'))
print('刪除後的option:',config.items('node1'))

輸出結果:

刪除前的option: [('dd', 'ab')]
刪除後的option: []

# 刪除section
print('刪除前的section: ',config.sections())
config.remove_section('node1')
config.write(open(inipath,'w'))
print('刪除後的section: ',config.sections())

輸出結果:

刪除前的section:  ['section1', 'section2', 'node1']
刪除後的section:  ['section1', 'section2']

3.10 寫入方式

1、write寫入有兩種方式,一種是刪除原始檔內容,重新寫入:w

config.write(open(inipath,'w'))

另一種是在原文基礎上繼續寫入內容,追加模式寫入:a

config.write(open(inipath,'a'))

需要注意的是,config.read(inipath,encoding='utf-8')只是將檔案內容讀取到記憶體中,即使經過一系列的增刪改操作,只有執行了以上的寫入程式碼後,操作過的內容才會被寫回檔案,才能生效。

到此這篇關於Python中ConfigParser模組詳談的文章就介紹到這了,更多相關Python中ConfigParser模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com