python3 如何讀寫配置檔案(ini)
阿新 • • 發佈:2019-01-05
如何使用Python3讀取配置檔案(ini)
#
ini檔案簡介
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(v3)讀取方法
首先,Python讀取ini配置需要用到ConfigParser
包,所以要先載入它。
import configparser
之後我們需要載入配置檔案。
import configparser
config=configparser.ConfigParser()
#IpConfig.ini可以是一個不存在的檔案,意味著準備新建配置檔案。
config.read("IpConfig.ini")
接下來,我們可以使用configparser.add_section()
向配置檔案中新增一個Section
。
#新增節School
config.add_section("School")
注意:如果檔案中已經存在相應的專案,則不能再增加同名的節。
然後可以使用configparser.set()
在節School
中增加新的引數。
import configparser
#新增新的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")
你可以以同樣的方式增加其它幾項。
import configparser
#由於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))
import configparser