如何使用Python3讀寫INI配置檔案

2021-07-06 07:18:47 字數 4704 閱讀 8517



ini是我們常見到的配置檔案格式之一。

ini是微軟windows作業系統中的副檔名(也常用在其他系統)。

ini是英文「初始化(initial)」的縮寫。正如該術語所表示的,ini檔案被用來對作業系統或特定程式初始化或進行引數設定。

通過它,可以將經常需要改變的引數儲存起來(而且還可讀),使程式更加的靈活。

我先給出乙個ini檔案的示例。

[school]

ip =

10.15

.40.123

mask =

255.255

.255.0

gateway =

10.15

.40.1

dns =

211.82

.96.1

[match]

ip =

172.17

.29.120

mask =

255.255

.255.0

gateway =

172.17

.29.1

dns =

0.0.

0.0

這個配置檔案中儲存的是不同場合下的ip設定引數。

下面將以生成和讀取這個配置檔案為例,進行講解。

首先,python讀取ini配置需要用到configparser包,所以要先載入它。

import

configparser

之後我們需要載入配置檔案。

config=configparser.configparser

()#ipconfig

.ini可以是乙個不存在的檔案,意味著準備新建配置檔案。

config.

read

("ipconfig.ini"

)

接下來,我們可以使用configparser.add_section()向配置檔案中新增乙個section

#新增節school

config.

add_section

("school"

)

注意:如果檔案中已經存在相應的專案,則不能再增加同名的節。

然後可以使用configparser.set()在節school中增加新的引數

#新增新的ip位址引數

config.

set("school"

,"ip"

,"192.168.1.120"

)config.

set("school"

,"mask"

,"255.255.255.0"

)config.

set("school"

,"gateway"

,"192.168.1.1"

)config.

set("school"

,"dns"

,"211.82.96.1"

)

你可以以同樣的方式增加其它幾項。

#由於ini檔案中可能有同名項,所以做了異常處理

try:

config.

add_section

("match"

)config.

set("match"

,"ip"

,"172.17.29.120"

)config.

set("match"

,"mask"

,"255.255.255.0"

)config.

set("match"

,"gateway"

,"172.17.29.1"

)config.

set("match"

,"dns"

,"0.0.0.0"

)except configparser

.duplicatesectionerror

:

print

("section 'match' already exists"

)

增加完所有需要的專案後,要記得使用configparser.write()進行寫入操作。

config.

write

(open("ipconfig.ini"

, "w"))

以上就是寫入配置檔案的過程。

接下來我們使用configparser.get()讀取剛才寫入配置檔案中的引數。讀取之前要記得讀取ini檔案。

ip=config.

get("school"

,"ip"

)mask

=config.

get("school"

,"mask"

)gateway=config.

get("school"

,"gateway"

)dns=config.

get("school"

,"dns"

)print

((ip,mask+"\n"

+gateway,dns)

)

下面是乙個完整的示例程式,他將生成乙個ipconfig.ini的配置檔案,再讀取檔案中的資料,輸出到螢幕上。

# -*- coding: utf-8 -*-

import

configparser

#讀取配置檔案

config=configparser.configparser()

config.read(

"ipconfig.ini"

)#寫入宿舍配置檔案

try:

config.add_section(

"school"

) config.

set(

"school"

,"ip"

,"10.15.40.123"

) config.

set(

"school"

,"mask"

,"255.255.255.0"

) config.

set(

"school"

,"gateway"

,"10.15.40.1"

) config.

set(

"school"

,"dns"

,"211.82.96.1"

)except configparser.duplicatesectionerror:

print(

"section 'school' already exists"

)#寫入比賽配置檔案

try:

config.add_section(

"match"

) config.

set(

"match"

,"ip"

,"172.17.29.120"

) config.

set(

"match"

,"mask"

,"255.255.255.0"

) config.

set(

"match"

,"gateway"

,"172.17.29.1"

) config.

set(

"match"

,"dns"

,"0.0.0.0"

)except configparser.duplicatesectionerror:

print(

"section 'match' already exists"

)#寫入配置檔案

config.write(open(

"ipconfig.ini"

, "w"

))ip=config.

get(

"school"

,"ip"

)mask=config.

get(

"school"

,"mask"

)gateway=config.

get(

"school"

,"gateway"

)dns=config.

get(

"school"

,"dns"

)print((ip,mask+

"\n"

+gateway,dns))

python讀取ini檔案還是十分簡單的,這裡我給出的只是一些簡單的使用方法,如果想用更高階的功能,比如和注釋有關的功能。可以參考pyhton官方文件

python3官方參考文件

14.2. configparser — configuration file parser

本文markdown原始檔和提到的示例程式源**,可以在我的github上獲取。

本文**:

Python3使用minidom讀寫xml檔案

python使用minidom處理xml還是比較麻煩的,網上很多資料都是斷斷續續的一部分,不成體統。這裡寫乙個demo,把常用xml解析操作 讀寫檔案 解析節點 新增節點 解析屬性 新增屬性 解析節點值和修改節點值等,都包含進來的。供各位讀者參考 demo實現的功能是從input.xml檔案中讀取x...

如何使用Python3讀寫INI配置檔案

ini是我們常見到的配置檔案格式之一。ini是微軟windows作業系統中的副檔名 也常用在其他系統 ini是英文 初始化 initial 的縮寫。正如該術語所表示的,ini檔案被用來對作業系統或特定程式初始化或進行引數設定。通過它,可以將經常需要改變的引數儲存起來 而且還可讀 使程式更加的靈活。我...

python3讀寫檔案

一 系統預設的編碼格式為utf8 二 讀寫檔案時通過引數encoding utf8 指定編碼格式,否則檔案在本地開啟時會亂碼 與系統預設編碼不符,參考第1條 三 例項 設定編碼格式為utf8,本地開啟和程式讀取都展示正常,無亂碼 text 我是xx,我愛python f open a.txt w e...