如何利用python 讀取配置文件
引言
在編寫(xiě)接口自動(dòng)化測(cè)試腳本時(shí),有時(shí)我們需要在代碼中定義變量并給變量固定的賦值。為了統(tǒng)一管理和操作這些固定的變量,咱們一般會(huì)將這些固定的變量以一定規(guī)則配置到指定的配置文件中,后續(xù)需要用到這些變量和變量值時(shí)通過(guò)代碼讀取或者寫(xiě)入數(shù)據(jù)到該配置文件即可,使用配置文件的好處就是不用在程序員寫(xiě)死,可以使程序更靈活。因而對(duì)于python語(yǔ)言就封裝了configparser模塊,用來(lái)處理指定格式的文件(文件名稱(chēng)一般為xxx.ini),配置文件的格式跟windows下的ini配置文件相似,可以包含一個(gè)或多個(gè)節(jié)(section), 每個(gè)節(jié)可以有多個(gè)參數(shù)(鍵=值)。
注:目前python3版本操作配置文件模塊名稱(chēng)變更為configparser,原有的python2版本配置文件模塊名稱(chēng)變更為ConfigParser
configparser模塊功能介紹
configparser模塊主要封裝提供了ConfigParser()類(lèi)、RawConfigParser()類(lèi)、SafeConfigParser()類(lèi)等,如下圖導(dǎo)入configparser模塊,可以查看并使用模塊下已經(jīng)封裝好的所有類(lèi)
在configparser模塊中主要還是使用封裝的ConfigParser()類(lèi)提供的方法來(lái)操作配置文件,對(duì)配置文件進(jìn)行數(shù)據(jù)讀取和寫(xiě)入等。
具體的該模塊python官網(wǎng)對(duì)其有完整的介紹:https://docs.python.org/3/library/configparser.html
配置文件的格式如下:
- 中括號(hào)“[ ]”內(nèi)包含的為section。
- section 下面為類(lèi)似于key-value 的配置內(nèi)容,一般是用賦值符“=”分隔。
示例:
讀取配置文件及其常用讀取指定數(shù)據(jù)方法
ConfigParser()類(lèi)提供了操作讀取配置文件、讀取指定配置文件中section、section下的所有key-value等方法,具體方法使用如下:
代碼示例:
import configparser cf = configparser.ConfigParser() # 實(shí)例化 # read(filename) 讀取文件 filename = cf.read(r'G:\api_test\configfile.ini',encoding='utf-8') # sections() 得到所有的section,以列表形式返回 sec = cf.sections() print(sec) # 得到section下的所有option opt = cf.options("mysql") print(opt) # items 得到section的所有鍵值對(duì) value = cf.items("mysql") print(value) print(dict(value)) # 轉(zhuǎn)成字典類(lèi)型 # get(section,option) 得到section中的option值,返回string/int類(lèi)型的結(jié)果 mysql_host = cf.get("mysql","host") mysql_password = cf.getint("mysql","port") print(mysql_host,mysql_password)
運(yùn)行以上代碼輸出如下:
寫(xiě)入配置文件(增刪改操作)及其提供的操作方法
ConfigParser()類(lèi)提供了寫(xiě)入修改配置文件數(shù)據(jù)等方法,具體方法使用如下:
在配置文件編輯如下信息:
編輯如下代碼:
import configparser conf = configparser.ConfigParser() conf.read(r'G:\api_test\configfile.ini',encoding='utf-8') conf.set("code", "code", "6666") # 修改指定section 的option conf.set("code", "age", "123") # 增加指定section 的option conf.has_section("code") conf.has_option("code","age") #conf.remove_section("test") #conf.remove_option("test","haha") if 'test' not in conf.sections(): conf.add_section("test") # 增加section conf.set("test", "haha", "123") # 給新增的section 寫(xiě)入option file = open(r'G:\api_test\configfile.ini', 'w',encoding='utf-8') conf.write(file) file.close()
運(yùn)行結(jié)束后如下:
編輯修改配置文件記得關(guān)閉配置文件。
通過(guò)以上使用ConfigParser()類(lèi)提供讀寫(xiě)配置文件的相關(guān)方法,就可以比較方便的操作配置文件。but,以上向配置文件讀取和寫(xiě)入數(shù)據(jù)到配置文件的代碼,并沒(méi)有進(jìn)行封裝。由于經(jīng)常需要使用配置文件進(jìn)行數(shù)據(jù)讀取和寫(xiě)入,因此建議將操作配置文件讀寫(xiě)的操作封裝成公共的模塊。如操作讀取配置文件的數(shù)據(jù)的封裝,配置文件內(nèi)容如下:
新建read_config.py文件,封裝的讀取配置文件的代碼,實(shí)例如下:
import configparser import os class ReadConfig(): def __init__(self, filepath=None): root_dir = os.path.dirname(os.path.abspath('.')) # 獲取項(xiàng)目主路徑 # print("打印",root_dir) configpath = os.path.join(root_dir, "configfile.ini") # 拼接路徑 # print("得到的路徑為",configpath) self.cf = configparser.RawConfigParser() self.cf.read(configpath,encoding='utf-8') def get_cookie(self, param): value = self.cf.get("cookie", param) return value def get_sheet(self,param): value = self.cf.get("sheet",param) return value def get_mysql(self,param): value = self.cf.get("mysql",param) return value def get_code(self,param): value = self.cf.get("code",param) return value
這樣封裝成類(lèi)后,后續(xù)其他模塊需要讀取配置文件數(shù)據(jù),就可以不用重復(fù)寫(xiě)讀取配置文件的代碼,直接引入該封裝的類(lèi),并實(shí)例化對(duì)象調(diào)用類(lèi)里面封裝的方法即可。
以上就是如何利用python 讀取配置文件的詳細(xì)內(nèi)容,更多關(guān)于python 讀取配置文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python Des加密解密如何實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼
這篇文章主要介紹了Python Des加密解密如何實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01python測(cè)試開(kāi)發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat)
Supervisor是用Python開(kāi)發(fā)的一個(gè)client/server服務(wù),是Linux/Unix系統(tǒng)下的一個(gè)進(jìn)程管理工具,不支持Windows系統(tǒng),這篇文章主要介紹了python測(cè)試開(kāi)發(fā)django之使用supervisord?后臺(tái)啟動(dòng)celery?服務(wù)(worker/beat),需要的朋友可以參考下2022-07-07Python 內(nèi)置函數(shù)進(jìn)制轉(zhuǎn)換的用法(十進(jìn)制轉(zhuǎn)二進(jìn)制、八進(jìn)制、十六進(jìn)制)
這篇文章主要介紹了使用Python內(nèi)置函數(shù):bin()、oct()、int()、hex()可實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換的一些用法,需要的朋友可以參考下2018-04-04Python環(huán)境下安裝PyGame和PyOpenGL的方法
這篇文章主要介紹了Python環(huán)境下安裝PyGame和PyOpenGL的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03PyTorch中的C++擴(kuò)展實(shí)現(xiàn)
這篇文章主要介紹了PyTorch中的C++擴(kuò)展實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python 基于 tkinter 做個(gè)學(xué)生版的計(jì)算器
這篇文章主要介紹了基于Python編寫(xiě)一個(gè)計(jì)算器程序,實(shí)現(xiàn)簡(jiǎn)單的加減乘除和取余二元運(yùn)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09Python對(duì)列表的操作知識(shí)點(diǎn)詳解
在本篇文章里小編給大家整理了關(guān)于Python對(duì)列表的操作知識(shí)點(diǎn)總結(jié)以及實(shí)例代碼運(yùn)用,需要的朋友們跟著學(xué)習(xí)下。2019-08-08Python基于Gensim實(shí)現(xiàn)文本相似度/匹配/查重
Gensim是基于Python語(yǔ)言的自然語(yǔ)言處理庫(kù),用來(lái)主題建模、文本相似度等文本處理任務(wù),下面我們就來(lái)看看如何使用Gensim實(shí)現(xiàn)文本相似度/匹配/查重等操作吧2024-03-03