python操作ini配置檔案
阿新 • • 發佈:2018-11-29
一、資料準備
1.建一個config的資料夾
2.在config資料夾下,新建一個cfg.ini檔案
選中config資料夾,點選滑鼠右鍵,new----> file,在檔名稱輸入框中輸入cfg.ini,點選確定。
3.在cfg.ini中填入資料,如下圖
4.cfg.ini新增的資料不要帶引號 ’ ’ 或 " ", 讀取配置檔案中的資料是字串。
二、操作ini配置檔案
在config資料夾下建一個readConfig.py的python檔案,用於讀取cfg.ini配置檔案中的資料。
1.關鍵函式
read(cfgpath, encoding= 'utf-8') #讀ini檔案
sections() #獲取所有的section, 返回list
items(section) #獲取section中的內容
remove_option(section, option) #刪除一個section中的item
add_section(section) #新增一個section
set(section, option, value) #往section裡面新增key和value
conf.get(section, option) #獲取section中option的鍵值
write(cfgpath, 'r+', encoding='utf-8') #寫入內容
2.分步講解
1)首先需要建立管理物件 conf ,然後讀取ini檔案。
如果不conf.read()讀取ini檔案,後面對cfg.ini檔案進行sections()、items(section)等操作是沒有資料的。
除非add_section(section)或set(section, option, value) 操作後,就會有資料。
#coding=utf-8
import configparser
import os
curpath = os.path.dirname(os.path.realpath( __file__))
cfgpath = os.path.join(curpath, 'cfg.ini') #cfg.ini路徑
#建立管理物件
conf = configparser.ConfigParser()
#讀ini檔案
conf.read(cfgpath, encoding='utf-8')
2)對cfg.ini中原有的資料操作
#獲取所有的section, 返回list
sections = conf.sections() #需要先read,否則沒資料,返回空的list
print(sections) #['email']
items = conf.items('email')
print(items) #list裡面物件是元祖
# 返回section中的option的鍵值
value = conf.get('email','sender')
print(value)
# 刪除一個section中的item(以鍵值KEY為標識)
conf.remove_option('email', "psw") #列印刪除成功了,cfg.ini檔案中的psw沒被刪除
print(conf.items('email'))
#刪除整個section,不會刪除cfg.ini檔案中中的section
conf.remove_section('email')
print(conf.sections()) #[]
3)新增section,key,option
#新增一個section
conf.add_section("info")
# 往section裡面新增key和value
conf.set('info', 'name', 'zhangsan')
conf.set('info', 'company', 'tecent')
print(conf.sections())
print(conf.items('info'))
總結:以上方法都不會真正修改cfg.ini配置檔案中的內容,只有當進行conf.write()操作時,才會真正修改cfg.ini中的內容。
4)新增新的section到cfg.ini配置檔案中
#新增一個section
conf.add_section("info")
# 往section裡面新增key和value
conf.set('info', 'name', 'zhangsan')
conf.set('info', 'company', 'tecent')
print(conf.sections())
print(conf.items('info'))
conf.write(open(cfgpath, 'a')) #追加模式寫入,追加時不要read檔案,否則會將ini檔案中的內容全部追加
cfg.ini配置檔案中內容如圖:
info這個section確實被追加到配置檔案中了,配置檔案中卻多出了一個[email],這是因為執行了conf.read()操作。註釋掉conf.read()追加就正常了。如下圖: