1. 將程序中不常變化的數據放在配置文件中,有什麼好處?python
將配置統一放在一塊兒,進行統一管理,方便維護,方便修改函數
2. 結構測試
[file_path]
cases_path = cases.xlsx
3. 讀取配置文件基本操做url
# 讀取配置文件須要導入一個類:configparser (譯:康飛哥盤思)系統自帶不須要安裝 from configparser import ConfigParser # 1.建立配置解析器 config = ConfigParser() # 2.指定讀取的配置文件.read(譯:瑞德):指定讀取的文件名,文件名能夠是相對或絕對路徑 config.read("testcase.conf", encoding="utf-8") # 3.讀取數據-------讀取的是哪一個區域下的那個選項名 # 方法一:使用方括號["區域名"]["選項名"] one_value = config["file path"]["cases_path"] # 方法二:使用.get("區域名", "選項名") -----推薦使用這個 two_value = config.get("msg", "success_result") # 從配置文件中,使用方括號或者get讀取的全部值都是字符串類型 # 可使用getboolean方法獲取bool類型的數據 config.getboolean("msg", "va1") # 可使用getboolean方法獲取bool類型的數據 # 一、yes、on、true、True ---> 都會讀取爲布爾類型True # 0、no、off、false、False ---> 都會讀取爲布爾類型False # 可使用getfloat方法獲取float類型的數據 config.getfloat("msg", "value2") # 可使用getint方法獲取int類型的數據 config.getint("msg", "value1") # 讀取列表 one_list = config.get('msg', 'value7') # eval 函數可以將字符串轉換爲 python 中的內置類型 # 至關如把字符串的引號(單引號或者雙引號)去掉以後的類型 # 也可以執行字符串類表達式 one_list = eval(one_list)
4. 寫入配置文件基本操做spa
---不建議對已有文件進行寫入,會覆蓋掉源文件日誌
from configparser import ConfigParser # 1.建立配置解析器 config = ConfigParser() # 2.寫入配置的時候,不用使用read(read是讀) # 構造要寫入的數據,嵌套字典的字典 datas = { "file path": { "cases_path": "cases1.xlsx", "log_path": "record_run_result.txt" }, "msg1": { "success_result": "Pass", "fail_result": "Fail" } } # 讀取配置寫入----config['區域名']['選項名'] for key in datas: config[key] = datas[key] # config相似於一個空字典 # 3.保存到文件 a = 追加 with open("write_config.ini", "w") as file: config.write(file)
5. 配置文件讀寫數據的封裝code
# 封裝配置文件 from configparser import ConfigParser class HandleConfig: """ 配置文件讀寫數據的封裝 """ def __init__(self, filename): """ :param filename: 配置文件名 """ self.filename = filename self.config = ConfigParser() # 讀取配置文件1.建立配置解析器 self.config.read(self.filename, encoding="utf-8") # 讀取配置文件2.指定讀取的配置文件 # get_value獲取全部的字符串,section區域名, option選項名 def get_value(self, section, option): return self.config.get(section, option) # get_int獲取整型,section區域名, option選項名 def get_int(self, section, option): return self.config.getint(section, option) # get_float獲取浮點數類型,section區域名, option選項名 def get_float(self, section, option): return self.config.getfloat(section, option) # get_boolean獲取布爾類型,section區域名, option選項名 def get_boolean(self, section, option): return self.config.getboolean(section, option) # get_eval_data獲取列表,section區域名, option選項名 def get_eval_data(self, section, option): return eval(self.config.get(section, option)) @staticmethod def write_config(datas, filename): """ 寫入配置操做 :param datas: 須要傳入寫入的數據 :param filename: 指定文件名 :return: """ # 作校驗,爲嵌套字典的字典才能夠(意思.隱私.談.ce) if isinstance(datas, dict): # 在外層判斷是否爲字典 # 再來判斷內層的 values 是否爲字典 for value in datas.values(): # 先取出value if not isinstance(value, dict): # 在判斷 return "數據不合法, 應爲嵌套字典的字典" config = ConfigParser() # 1.建立配置解析器---與寫入配置操做一致 for key in datas: # 寫入操做 config[key] = datas[key] with open(filename, "w") as file: # 保存到哪一個文件filename=須要指定文件名 config.write(file) # return "寫入成功" # do_config = HandleConfig('testcase.conf') if __name__ == '__main__': # 讀取操做 do_config1 = HandleConfig('testcase.conf') # 讀取那個文件 res = do_config1.get_value("msg", "success_result") # 讀取什麼內容 print(res) # 寫入操做 do_config = HandleConfig('write_config.ini') datas = { "file path": { "cases_path": "cases.xlsx", "log_path": "record_run_result.txt" }, "msg": { "success_result": "Pass", "fail_result": "Fail" } } do_config.write_config(datas, "write_config.ini") pass
*******請你們尊重原創,如要轉載,請註明出處:轉載自:https://www.cnblogs.com/shouhu/ 謝謝!!******* blog