python自动配置文件_【python接口自动化】- ConfigParser配置文件的使用
前言:目前我們使用的絕大多數(shù)計(jì)算機(jī)程序,無論是辦公軟件,瀏覽器,甚至游戲、視頻都是通過菜單界面系統(tǒng)配置的,它幾乎成了我們使用機(jī)器的默認(rèn)方式。而在python中,也有這樣的一個(gè)配置模塊可以把代碼可配置化。
什么是配置文件
?這里的配置文件不同于我們平常所見的可視化的菜單界面,它是像代碼形式的,如下示例:
??為什么要做配置文件?
???讓代碼和配置都變成可模塊化可配置化,提高代碼的重用性,那什么時(shí)候把它變成可配置化呢?多處地方都用到一個(gè)參數(shù)時(shí),經(jīng)常會(huì)變化的參數(shù)等,都可以可配置化,我們只需要在配置文件中進(jìn)行修改即可,不需要在代碼中一處處的重復(fù)修改。
?Python提供了一個(gè)ConfigParser模塊,它實(shí)現(xiàn)了一種基本的配置文件解析器語言,該語言提供的結(jié)構(gòu)類似于.ini文件中的結(jié)構(gòu)。常見的配置文件格式有.ini.conf.cfg,配置文件由兩個(gè)文件對(duì)象組成:section和option,一個(gè)配置文件里可以包含一個(gè)或多個(gè)節(jié)(section),每個(gè)節(jié)可以有多個(gè)option(鍵=值),如上圖所標(biāo)示。
讀取配置文件
?它與file文件一樣,需要先打開才能進(jìn)行讀取操作,常用方法如下:
read(filename):直接讀取配置文件內(nèi)容
sections():以列表的形式返回所有section
options(section):得到對(duì)應(yīng)section下的所有option
items(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方法:讀取出來的內(nèi)容,都是字符串
res5 = conf.get("logging", "level")
print("這是res5:{}".format(res5), type(res5))
# getint方法:讀取出來的內(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
這是res6:3306
Process finished with exit code 0
?除了可以讀取str、int類型以外,還支持float、boolean,這里就不再舉例。
?🎈 小知識(shí):
鍵值對(duì)可用=也可用:進(jìn)行分隔
section名稱是區(qū)分大小寫的,而option不區(qū)分
鍵值對(duì)中,首尾若有空白符會(huì)被去掉
配置文件中也可以寫入注釋,注釋以#或者;為前綴
寫入配置文件
?基本的寫入方法如下:
add_section(section) :添加一個(gè)新的section
set( 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é)
以上是生活随笔為你收集整理的python自动配置文件_【python接口自动化】- ConfigParser配置文件的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广审备案表(广审备案号)
- 下一篇: python重定向到socket_pyt