python接口自動(dòng)化之ConfigParser配置文件的使用詳解
前言:目前我們使用的絕大多數(shù)計(jì)算機(jī)程序,無(wú)論是辦公軟件,瀏覽器,甚至游戲、視頻都是通過(guò)菜單界面系統(tǒng)配置的,它幾乎成了我們使用機(jī)器的默認(rèn)方式。而在python中,也有這樣的一個(gè)配置模塊可以把代碼可配置化。
什么是配置文件
這里的配置文件不同于我們平常所見(jiàn)的可視化的菜單界面,它是像代碼形式的,如下示例:
❓為什么要做配置文件?
✔️讓代碼和配置都變成可模塊化可配置化,提高代碼的重用性,那什么時(shí)候把它變成可配置化呢?多處地方都用到一個(gè)參數(shù)時(shí),經(jīng)常會(huì)變化的參數(shù)等,都可以可配置化,我們只需要在配置文件中進(jìn)行修改即可,不需要在代碼中一處處的重復(fù)修改。
Python提供了一個(gè)ConfigParser模塊,它實(shí)現(xiàn)了一種基本的配置文件解析器語(yǔ)言,該語(yǔ)言提供的結(jié)構(gòu)類似于.ini文件中的結(jié)構(gòu)。常見(jiàn)的配置文件格式有.ini.conf.cfg,配置文件由兩個(gè)文件對(duì)象組成:section和option,一個(gè)配置文件里可以包含一個(gè)或多個(gè)節(jié)(section),每個(gè)節(jié)可以有多個(gè)option(鍵=值),如上圖所標(biāo)示。
讀取配置文件
它與file文件一樣,需要先打開(kāi)才能進(jìn)行讀取操作,常用方法如下:
read(filename)
:直接讀取配置文件內(nèi)容sections()
:以列表的形式返回所有sectionoptions(section)
:得到對(duì)應(yīng)section下的所有optionitems(section)
:得到對(duì)應(yīng)section下的所有鍵值對(duì)get(section,option)
:得到對(duì)應(yīng)的section中的option的值,并以string的類型返回getint(section,option)
:得到對(duì)應(yīng)的section中的option的值,并以int的類型返回
以上圖中的conf.ini為例進(jìn)行讀取操作:
from configparser import ConfigParser # 創(chuàng)建一個(gè)操作配置文件的對(duì)象(文件解析對(duì)象) conf = ConfigParser() # 讀取配置文件 conf.read("conf.ini", encoding="utf8") # 獲取所有section res2 = conf.sections() print("這是res2:{}\n".format(res2)) # 獲取對(duì)應(yīng)section下的option res3 = conf.options("logging") print("這是res3:{}\n".format(res3)) # 獲取對(duì)應(yīng)section下的所有鍵值對(duì) res4 = conf.items("logging") print("這是res4:{}\n".format(res4)) # get方法:讀取出來(lái)的內(nèi)容,都是字符串 res5 = conf.get("logging", "level") print("這是res5:{}".format(res5), type(res5)) # getint方法:讀取出來(lái)的內(nèi)容,都是int類型 res6 = conf.getint("mysql", "port") print("\n這是res6:{}".format(res6), type(res6))
運(yùn)行結(jié)果:
C:\software\python\python.exe D:/learn/test.py
這是res2:['logging', 'mysql']這是res3:['level', 'f_level', 's_level']
這是res4:[('level', 'DEBUG'), ('f_level', 'DEBUG'), ('s_level', 'ERROR')]
這是res5:DEBUG <class 'str'>
這是res6:3306 <class 'int'>
Process finished with exit code 0
除了可以讀取str、int類型以外,還支持float、boolean,這里就不再舉例。
🎈 小知識(shí):
- 鍵值對(duì)可用
=
也可用:
進(jìn)行分隔 section
名稱是區(qū)分大小寫的,而option不區(qū)分- 鍵值對(duì)中,首尾若有空白符會(huì)被去掉
- 配置文件中也可以寫入注釋,注釋以
#
或者;
為前綴
寫入配置文件
基本的寫入方法如下:
add_section(section)
:添加一個(gè)新的sectionset( section, option, value)
:對(duì)section中的option進(jìn)行設(shè)置,需要調(diào)用write將內(nèi)容寫入配置文件
from configparser import ConfigParser # 創(chuàng)建一個(gè)操作配置文件的對(duì)象(文件解析對(duì)象) conf = ConfigParser() conf.add_section('test') conf.set('test', 'name', 'Amy') conf.write(open('conf.ini', "a", encoding="utf-8"))
運(yùn)行后查看conf.ini文件里面的內(nèi)容:
ConfigParser的封裝
一次封裝,一勞永逸,之后直接調(diào)用即可,封裝內(nèi)容按需。
from configparser import ConfigParser class MyConf: def __init__(self, filename, encoding="utf8"): self.filename = filename self.encoding = encoding self.conf = ConfigParser() self.conf.read(filename, encoding) def get_str(self, section, option): return self.conf.get(section, option) def get_int(self, section, option): return self.conf.getint(section, option) def get_float(self, section, option): return self.conf.getfloat(section, option) def get_bool(self, section, option): def write_data(self, section, option, value): self.conf.set(section, option, value) self.conf.write(open(self.filename, "a", encoding=self.encoding)) if __name__ == '__main__': print(conf.get_str("conf.ini", "test","name")) # 測(cè)試
總結(jié)
到此這篇關(guān)于python接口自動(dòng)化 ConfigParser配置文件的使用的文章就介紹到這了,更多相關(guān)python接口自動(dòng)化ConfigParser配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用python在剪貼板上讀取/寫入數(shù)據(jù)
說(shuō)起處理數(shù)據(jù)就離不開(kāi)導(dǎo)入導(dǎo)出,而我們使用Pandas時(shí)候最常用的就是read_excel、read_csv了,下面這篇文章主要給大家介紹了關(guān)于如何利用python在剪貼板上讀取/寫入數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-07-07Python基于正則表達(dá)式實(shí)現(xiàn)文件內(nèi)容替換的方法
這篇文章主要介紹了Python基于正則表達(dá)式實(shí)現(xiàn)文件內(nèi)容替換的方法,涉及Python文件、目錄及字符串正則替換等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08對(duì)python讀取zip壓縮文件里面的csv數(shù)據(jù)實(shí)例詳解
今天小編就為大家分享一篇對(duì)python讀取zip壓縮文件里面的csv數(shù)據(jù)實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02Python中使用Beautiful Soup庫(kù)的超詳細(xì)教程
這篇文章主要介紹了Python中使用Beautiful Soup庫(kù)的超詳細(xì)教程,示例代碼基于Python2.x版本,極力推薦!需要的朋友可以參考下2015-04-04matplotlib共享坐標(biāo)軸的實(shí)現(xiàn)(X或Y坐標(biāo)軸)
在作圖的過(guò)程中,我們經(jīng)常會(huì)遇到子圖共用坐標(biāo)軸的情況,或是共用橫軸標(biāo)軸,也可能是縱坐標(biāo)軸。本文就介紹了matplotlib共享坐標(biāo)軸,感興趣的可以了解一下2021-05-05Python基于pygame實(shí)現(xiàn)單機(jī)版五子棋對(duì)戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了Python基于pygame實(shí)現(xiàn)單機(jī)版五子棋對(duì)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12Python datetime 如何處理時(shí)區(qū)信息
這篇文章主要介紹了Python datetime 如何處理時(shí)區(qū)信息,幫助大家更好的用python 處理時(shí)間,感興趣的朋友可以了解下。2020-09-09使用Python文件讀寫,自定義分隔符(custom delimiter)
這篇文章主要介紹了使用Python文件讀寫,自定義分隔符(custom delimiter),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07Pytorch?linear?多維輸入的參數(shù)問(wèn)題
這篇文章主要介紹了Pytorch?linear多維輸入的參數(shù)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08