【自動化測試】Python 讀取 .ini 格式檔案

unpredictable_X發表於2019-02-16

大家應該接觸過.ini格式的配置檔案。配置檔案就是把一些配置相關資訊提取出去來進行單獨管理,如果以後有變動只需改配置檔案,無需修改程式碼。特別是後續做自動化的測試,需要拎出一部分配置資訊,進行管理。比如說傳送郵件的郵箱配置資訊、資料庫連線等資訊。

今天介紹一些如何用Python讀取ini配置檔案。

一、ini檔案格式

  • 格式如下:
; comments
[section1]
Param1 = value1
Param2= value2
[section2]
Param3= value3
Param4= value4
  • [section]:ini的section模組,是下面引數值的一個統稱,方便好記就行。
  • Param = value:引數以及引數值。
  • ini 檔案中,使用“;”進行註釋。

二、讀取ini檔案

Python自帶有讀取配置檔案的模組ConfigParser,配置檔案不區分大小寫。
有一系列的方法可提供。

  • read(filename):讀取檔案內容
  • sections():得到所有的section,並以列表的形式返回。
  • options(section):得到該section的所有option。
  • items(section):得到該section的所有鍵值對。
  • get(section,option):得到section中option的值,返回string型別。
  • getint(section,option):得到section中option的值,返回int型別。

舉個例子:

import os
import configparser

# 當前檔案路徑
proDir = os.path.split(os.path.realpath(__file__))[0]
# 在當前檔案路徑下查詢.ini檔案
configPath = os.path.join(proDir, "config.ini")
print(configPath)

conf = configparser.ConfigParser()

# 讀取.ini檔案
conf.read(configPath)
# get()函式讀取section裡的引數值
name  = conf.get("section1","name")
print(name)
print(conf.sections())
print(conf.options(`section1`))
print(conf.items(`section1`))

執行結果:

D:Python_projectpython_learningconfig.ini
2號
[`section1`, `section2`, `section3`, `section_test_1`]
[`name`, `sex`, `option_plus`]
[(`name`, `2號`), (`sex`, `female`), (`option_plus`, `value`)]

三、修改並寫入ini檔案

  • write(fp):將config物件寫入至某個ini格式的檔案中。
  • add_section(section):新增一個新的section。
  • set(section,option,value):對section中的option進行設定,需要呼叫write將內容寫入配置檔案。
  • remove_section(section):刪除某個section。
  • remove_option(section,option):刪除某個section下的option

舉個例子:接上部分

# 寫入配置檔案 set()
# 修改指定的section的引數值
conf.set("section1",`name`,`3號`)

# 增加指定section的option
conf.set("section1","option_plus","value")
name = conf.get("section1","name")
print(name)
conf.write(open(configPath,`w+`))

# 增加section
conf.add_section("section_test_1")
conf.set("section_test_1","name","test_1")
conf.write(open(configPath,`w+`))

來句雞湯:相信未來會越走越好 那麼就肯定要堅持 我希望未來的我不會讓自己後悔


❤ thanks for watching, keep on updating…

相關文章