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...