python怎麼讀取配置檔案

dunne21發表於2021-09-11

python怎麼讀取配置檔案

configparser模組在python中用來讀取配置檔案,配置檔案的格式跟windows下的ini配置檔案相似,可以包含一個或多個節點(section), 每個節可以有多個引數(鍵=值)。使用的配置檔案的好處就是不用把程式寫死,可以使程式更靈活。

1、建立配置檔案

一般將配置檔案建立在config包下,配置檔案最好使用.ini格式,示例如下:

[LoginElement]   #節點(section)
user_name=id>logInName     #其中id決定了透過哪種方式進行定位
user_password=id>password
code_image=id>verifyCode
code_text=id>verifyCodeInput
submit=id>submitForm
[mysql]          #節點(section)
host=id>127.0.0.1
port=id>3306
user=id>root
password=id>123456

2、讀取配置檔案

cf=configparser.ConfigParser()   #建立物件
cf.read('D:liantuoseleniumTestconfigLocalElement.ini',encoding='UTF-8')   #讀取配置檔案,直接讀取ini檔案內容
print(cf.sections())         #獲取ini檔案內所有的section(節點),以列表形式返回
print(cf.options("LoginElement"))   #獲取指定sections下所有options (key),以列表形式返回
print(cf.items('LoginElement'))     #獲取指定section下所有的鍵值對(key-value)
print(cf.get('LoginElement','user_name'))   #獲取section中option的值,返回為string型別
getint(section,option)  #返回int型別
getfloat(section, option)  #返回float型別
getboolean(section,option) #返回boolen型別

*注意:讀取配置檔案時引數新增encoding='UTF-8' ,防止(UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 15: illegal multibyte sequence)

對應輸出

['LoginElement', 'mysql']
['user_name', 'user_password', 'code_image', 'code_text', 'submit']
[('user_name', 'id>logInName'), ('user_password', 'id>password'), ('code_image', 'id>verifyCode'), ('code_text', 
'id>verifyCodeInput'), ('submit', 'id>submitForm')]
id>logInName

3、重構封裝

class ReadIni(object):
     # 建構函式
    def __init__(self,file_name=None,node=None):
        '''
        :param file_name:配置檔案地址
        :param node: 節點名
        '''
        #容錯處理
        if file_name == None:
            #預設地址
            file_name = 'D:liantuoseleniumTestconfigLocalElement.ini'
        else:
            self.file_name=file_name
        if node == None:
            #預設節點
            self.node = "LoginElement"
        else:
            self.node = node
        self.cf = self.load_ini(file_name)
    #載入檔案
    def load_ini(self,file_name):
        cf = configparser.ConfigParser()
        cf.read(file_name,encoding='utf-8')
        return cf
    #獲取value得值
    def get_value(self,key):
        data = self.cf.get(self.node,key)
        return data
#主入口,相當於java的main方法
if __name__ == '__main__':
    #自定義
    # path=r'E:PythonxseleniumTestconfigtestIni.ini'   #注意r
    # read_init = ReadIni(file_name=path,node='testa')   #傳入新自定義配置檔案地址、節點
    # print(read_init.get_value('ji'))    #獲取value值
    #預設
    read_init = ReadIni()   #預設配置檔案地址、節點
    print(read_init.get_value('user_name'))  #傳入key值,獲取value

python學習網,免費的線上學習,歡迎關注!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1600/viewspace-2834974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章