1. 程式人生 > >python操作ini配置檔案

python操作ini配置檔案

一、資料準備

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()追加就正常了。如下圖:

在這裡插入圖片描述