ini是微軟Windows操作系統(tǒng)中的文件擴(kuò)展名(也常用在其他系統(tǒng))。
柯坪網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
INI是英文“初始化(Initial)”的縮寫(xiě)。正如該術(shù)語(yǔ)所表示的,INI文件被用來(lái)對(duì)操作系統(tǒng)或特定程序初始化或進(jìn)行參數(shù)設(shè)置。通過(guò)它,可以將經(jīng)常需要改變的參數(shù)保存起來(lái)(而且還可讀),使程序更加的靈活。
先給出一個(gè)ini文件的示例。
1234567891011[School]ip = 10.15.40.123mask = 255.255.255.0gateway = 10.15.40.1dns = 211.82.96.1 [Match]ip = 172.17.29.120mask = 255.255.255.0gateway = 172.17.29.1dns = 0.0.0.0
這個(gè)配置文件中保存的是不同場(chǎng)合下的IP設(shè)置參數(shù)。
首先,Python讀取ini配置需要用到ConfigParser包,所以要先加載它。
1import configparser
之后我們需要載入配置文件。
1config=configparser.ConfigParser()
#IpConfig.ini可以是一個(gè)不存在的文件,意味著準(zhǔn)備新建配置文件。
1config.read("IpConfig.ini")
接下來(lái),我們可以使用configparser.add_section()向配置文件中添加一個(gè)Section。
#添加節(jié)School
1config.add_section("School")
注意:如果文件中已經(jīng)存在相應(yīng)的項(xiàng)目,則不能再增加同名的節(jié)。
然后可以使用configparser.set()在節(jié)School中增加新的參數(shù)。
#添加新的IP地址參數(shù)
1234config.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")
你可以以同樣的方式增加其它幾項(xiàng)。
#由于ini文件中可能有同名項(xiàng),所以做了異常處理
12345678try: 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")
增加完所有需要的項(xiàng)目后,要記得使用configparser.write()進(jìn)行寫(xiě)入操作。
1config.write(open("IpConfig.ini", "w"))
以上就是寫(xiě)入配置文件的過(guò)程。
接下來(lái)我們使用configparser.get()讀取剛才寫(xiě)入配置文件中的參數(shù)。讀取之前要記得讀取ini文件。
12345ip=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)
下面是一個(gè)完整的示例程序,它將生成一個(gè)IpConfig.ini的配置文件,再讀取文件中的數(shù)據(jù),輸出到屏幕上。
1# -*- coding: utf-8 -*-import configparser#讀取配置文件config=configparser.ConfigParser()config.read("IpConfig.ini")#寫(xiě)入宿舍配置文件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")#寫(xiě)入比賽配置文件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")#寫(xiě)入配置文件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))
使用 內(nèi)置 模塊:import configparser
import?os,?configparser,?time
cp?=?configparser.ConfigParser()
Settings?=?dict(
config_file?=?os.path.join(os.path.dirname(__file__),'monitor.conf'),
config?=?cp
)
def?reload():??#重置設(shè)置
cp?=?Settings['config']
cp.read(Settings['config_file'])
def?get(section,key,default=None):???#獲取section中的key對(duì)應(yīng)的value
cp?=?Settings['config']
try:
value?=?cp.get(section,?key)
except?(configparser.NoSectionError,configparser.NoOptionError):
value?=?default
return?value
reload()
if?__name__=='__main__':
print(get('section1',?'key1'))
print(1)
time.sleep(5)
reload()
print(get('section',?'key1'))
1、說(shuō)明:
python3使用configparser模塊來(lái)處理ini配置文件。
2、代碼示例:
需要生成conf.ini配置文件如下:
[config]
v1
=
100
v2
=
abc
v3
=
true
v4
=
123.45
python代碼:
import
configparser
#
加載現(xiàn)有配置文件
conf
=
configparser.ConfigParser()
#
寫(xiě)入配置文件
conf.add_section('config')
#添加section
#
添加值
conf.set('config',
'v1',
'100')
conf.set('config',
'v2',
'abc')
conf.set('config',
'v3',
'true')
conf.set('config',
'v4',
'123.45')
#
寫(xiě)入文件
with
open('conf.ini',
'w')
as
fw:
conf.write(fw)
#
讀取配置信息
v1
=
conf.getint('config',
'v1')
v2
=
conf.get('config',
'v2')
v3
=
conf.getboolean('config',
'v3')
v4
=
conf.getfloat('config',
'v4')
print('v1:',
v1)
print('v2:',
v2)
print('v3:',
v3)
print('v4:',
v4)
打開(kāi)conf.ini文件檢查內(nèi)容
3、模塊常用函數(shù):
1)讀取配置文件
read(filename)
直接讀取ini文件內(nèi)容
sections()
得到所有的section,并以列表的形式返回
options(section)
得到該section的所有option
items(section)
得到該section的所有鍵值對(duì)
get(section,option)
得到section中option的值,返回為string類(lèi)型
getint(section,option)
得到section中option的值,返回為int類(lèi)型,還有相應(yīng)的getboolean()和getfloat()
函數(shù)。
2)寫(xiě)入配置文件
add_section(section)
添加一個(gè)新的section
set(
section,
option,
value)
對(duì)section中的option進(jìn)行設(shè)置,需要調(diào)用write將內(nèi)容寫(xiě)入配置文件。
官方文檔
從源碼看出,這個(gè)ini文檔,可以像字典一樣,使用“:”,但一般我們都使用“=”,并且值都不需要加引號(hào)
備注可以使用'#'或';',單獨(dú)一行,可縮進(jìn)。
class ConfigParser(RawConfigParser):
class RawConfigParser(MutableMapping):
詳細(xì)看官網(wǎng),不搬磚,列出幾個(gè)我自己常用的