5. python對配置文件進行了編輯內容後,再次讀取配置文件報編碼錯誤

class MyConfig(configparser3.ConfigParser):

    def __init__(self, file_name):
        # 實例化對象
        super().__init__()
        self.cfg_file = os.path.join(CONF_PATH, file_name)
        self.read(self.cfg_file, encoding="utf8")
    

    def modify_specilize_section_option_content(self, section_name, option_name, content):
        """ 向指定配置文件中的指定section_option寫入指定內容
        :param section_name:  setion名稱
        :param option_name: option名稱
        :param content:  寫入內容,必須是str型
        :return: None
        """
        # section存在判斷
        if self.has_section(section_name):  # 是否存在該section
            self.set(section_name, option_name, content)
        # 不存在section
        else:
            # 添加section
            self.add_section(section=section_name)
            self.set(section=section_name, option=option_name, value=content)  # 給section項中寫入鍵值對
        with open(self.cfg_file, mode="w+") as f:
            self.write(f)

代碼內容如上,配置文件內容如下:

我們執行如下代碼:

if __name__ == "__main__":
    my_config = MyConfig('stuinfo.ini')
    my_config.modify_specilize_section_option_content('Name', 'Zhangsan', '張三三')

會運行成功,這時候我們去查看配置文件內容,會發現: 

1.  配置文件出現亂碼

2. 我們再次讀取配置文件內容時,就會報下方編碼錯誤:

  

那麼原因是什麼呢?

原因在於我們對配置文件進行修改後進行保存時,編碼格式選擇的是None, 

所以,寫入後保存,再次打開配置文件就亂碼了

並且,我們讀取配置文件時,編碼選擇的時utf8,配置文件亂碼後,使用utf8編碼方式報錯就出現異常了

 

上方原因已經指明。那麼久很好修改了,修改

modify_specilize_section_option_content函數中with open()一行,參數增加一項,encoding="utf8",就可以解決問題了

這時,要是進行修改配置文件,配置文件就不會亂碼了,讀取配置文件就不會報編碼問題了 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章