1. 程式人生 > 實用技巧 >python解析.ini檔案

python解析.ini檔案

第一part:.ini檔案的介紹


1.ini 檔案的含義:

是Initialization File的縮寫(初始化檔案),是windows的系統配置檔案所採用的儲存格式,統管windows的各項配置,一般使用者就用windows提供的各項圖形化管理介面就可實現相同的配置了。

2.ini檔案的內容結構:
一個ini檔案主要是由多個section組成,每個section中又有多個option,其每個option的格式是key=value鍵值對的形式進行儲存;

注意:section不能重複,裡面資料通過section去查詢,每個seletion下可以有多個key和vlaue的鍵值對,註釋用英文分號(;)


第二part:python讀取.ini檔案的內容--》read


操作.ini檔案可以直接使用python的內建模組:configparser

#1.導包
import configparser
#2建立物件
read_ini = configparser.ConfigParser()
#3.讀取檔案內容
read_ini.read("Database.ini")
#第一種讀取ini檔案方式,直接讀取
value = read_ini['mysql']['user']
print("第一種方法讀取的值:",value)
# 第二種讀取ini檔案方式,通過get方法
value = read_ini.get('mysql','db')

print('第二種方法讀取到的值:',value)
# 第三種讀取ini檔案方式,讀取到一個section中的所有資料,返回一個列表
value = read_ini.items('mysql')
print('第三種方法讀取到的值:',value)

執行結果如下:

通過上面三種方式,可以發現讀取到的資料全部是str型別,但資料庫的埠我們一般都是要獲取為int型別,因此可以通過如下幾個方法可以將其轉換為我們需要的資料型別:

1)getint() 讀取的資料為int型別

#讀取到值為int型別
value=read_ini.getint('mysql','port')
print('讀取到值為int型別:',value)

print('value的型別為:',type(value))
執行結果,如下:

2)getfloat()讀取的資料為float型別

#讀取到值為float型別
value=read_ini.getfloat('study','price')
print('讀取到值為float型別:',value)
print('value的型別為:',type(value))
執行結果,如下:

3)getboolean() 讀取的資料為Boolean型別#讀取到值為boolean型別

value=read_ini.getboolean('study','result')
print('讀取到值為boolean型別:',value)
print('value的型別為:',type(value))
執行結果,如下:


第三part:python寫入內容到.ini檔案-->write


寫入有兩種方式:一種是刪除原檔案內容,重新寫入:w;另外一種是在原檔案基礎上繼續寫入內容,追加模式寫入:a

1)重新寫入:w

#重新寫入
read_ini.write(open("Database.ini"),'w')

2)追加模式寫入:a

#追加寫入
read_ini.write(open("Database.ini"),'a')

3)在ini檔案上追加寫入一項section內容

# 新增一個setion

read_ini.add_section("teacher_info")

print(read_ini.sections())

4)在ini檔案的section上新增option

# 往setion新增key和value
read_ini.set("info", "English", "Miss huang")

整體程式碼:

#1.導包
import configparser
#2建立物件
read_ini = configparser.ConfigParser()

#3. 新增一個setion
read_ini.add_section("info")
#4.列印所有的section
print(read_ini.sections())
#5.在section裡新增一個option
read_ini.set("info","English","Miss Huang")
#6.以追加的模式寫入
with open("Database.ini","a",encoding="utf-8") as fp:
fp.seek(2) #此處記得讓流的指標設定到檔案末尾,否則追加格式不好看
read_ini.write(fp)

執行後會發現ini檔案最後新增了寫入的內容: