如何利用python 讀取配置文件
在編寫接口自動(dòng)化測試腳本時(shí),有時(shí)我們需要在代碼中定義變量并給變量固定的賦值。為了統(tǒng)一管理和操作這些固定的變量,咱們一般會(huì)將這些固定的變量以一定規(guī)則配置到指定的配置文件中,后續(xù)需要用到這些變量和變量值時(shí)通過代碼讀取或者寫入數(shù)據(jù)到該配置文件即可,使用配置文件的好處就是不用在程序員寫死,可以使程序更靈活。因而對(duì)于python語言就封裝了configparser模塊,用來處理指定格式的文件(文件名稱一般為xxx.ini),配置文件的格式跟windows下的ini配置文件相似,可以包含一個(gè)或多個(gè)節(jié)(section), 每個(gè)節(jié)可以有多個(gè)參數(shù)(鍵=值)。
注:目前python3版本操作配置文件模塊名稱變更為configparser,原有的python2版本配置文件模塊名稱變更為ConfigParser
configparser模塊功能介紹configparser模塊主要封裝提供了ConfigParser()類、RawConfigParser()類、SafeConfigParser()類等,如下圖導(dǎo)入configparser模塊,可以查看并使用模塊下已經(jīng)封裝好的所有類
在configparser模塊中主要還是使用封裝的ConfigParser()類提供的方法來操作配置文件,對(duì)配置文件進(jìn)行數(shù)據(jù)讀取和寫入等。
具體的該模塊python官網(wǎng)對(duì)其有完整的介紹:https://docs.python.org/3/library/configparser.html
配置文件的格式如下:
中括號(hào)“[ ]”內(nèi)包含的為section。 section 下面為類似于key-value 的配置內(nèi)容,一般是用賦值符“=”分隔。示例:
讀取配置文件及其常用讀取指定數(shù)據(jù)方法
ConfigParser()類提供了操作讀取配置文件、讀取指定配置文件中section、section下的所有key-value等方法,具體方法使用如下:
代碼示例:
import configparser cf = configparser.ConfigParser() # 實(shí)例化 # read(filename) 讀取文件filename = cf.read(r’G:api_testconfigfile.ini’,encoding=’utf-8’) # sections() 得到所有的section,以列表形式返回sec = cf.sections()print(sec) # 得到section下的所有optionopt = cf.options('mysql')print(opt) # items 得到section的所有鍵值對(duì)value = cf.items('mysql')print(value)print(dict(value)) # 轉(zhuǎn)成字典類型 # get(section,option) 得到section中的option值,返回string/int類型的結(jié)果mysql_host = cf.get('mysql','host')mysql_password = cf.getint('mysql','port')print(mysql_host,mysql_password)
運(yùn)行以上代碼輸出如下:
寫入配置文件(增刪改操作)及其提供的操作方法
ConfigParser()類提供了寫入修改配置文件數(shù)據(jù)等方法,具體方法使用如下:
在配置文件編輯如下信息:
編輯如下代碼:
import configparser conf = configparser.ConfigParser()conf.read(r’G:api_testconfigfile.ini’,encoding=’utf-8’) conf.set('code', 'code', '6666') # 修改指定section 的optionconf.set('code', 'age', '123') # 增加指定section 的optionconf.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 寫入optionfile = open(r’G:api_testconfigfile.ini’, ’w’,encoding=’utf-8’)conf.write(file)file.close()
運(yùn)行結(jié)束后如下:
編輯修改配置文件記得關(guān)閉配置文件。
通過以上使用ConfigParser()類提供讀寫配置文件的相關(guān)方法,就可以比較方便的操作配置文件。but,以上向配置文件讀取和寫入數(shù)據(jù)到配置文件的代碼,并沒有進(jìn)行封裝。由于經(jīng)常需要使用配置文件進(jìn)行數(shù)據(jù)讀取和寫入,因此建議將操作配置文件讀寫的操作封裝成公共的模塊。如操作讀取配置文件的數(shù)據(jù)的封裝,配置文件內(nèi)容如下:
新建read_config.py文件,封裝的讀取配置文件的代碼,實(shí)例如下:
import configparserimport 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
這樣封裝成類后,后續(xù)其他模塊需要讀取配置文件數(shù)據(jù),就可以不用重復(fù)寫讀取配置文件的代碼,直接引入該封裝的類,并實(shí)例化對(duì)象調(diào)用類里面封裝的方法即可。
以上就是如何利用python 讀取配置文件的詳細(xì)內(nèi)容,更多關(guān)于python 讀取配置文件的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算2. java 優(yōu)雅關(guān)閉線程池的方案3. JSP頁面實(shí)現(xiàn)驗(yàn)證碼校驗(yàn)功能4. jsp實(shí)現(xiàn)textarea中的文字保存換行空格存到數(shù)據(jù)庫的方法5. jsp EL表達(dá)式詳解6. asp知識(shí)整理筆記4(問答模式)7. ASP實(shí)現(xiàn)加法驗(yàn)證碼8. python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)9. java通過cglib動(dòng)態(tài)生成實(shí)體bean的操作10. Python matplotlib 繪制雙Y軸曲線圖的示例代碼
