久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

在終端啟動Python時報錯的解決方案

瀏覽:49日期:2022-07-04 16:12:20

最近,在終端啟動Python時,報了一個錯誤:

Failed calling sys.__interactivehook__Traceback (most recent call last): File 'd:ProgramDataAnaconda3libsite.py', line 439, in register_readline readline.read_history_file(history) File 'd:ProgramDataAnaconda3libsite-packagespyreadlinerlmain.py', line 165, in read_history_file self.mode._history.read_history_file(filename) File 'd:ProgramDataAnaconda3libsite-packagespyreadlinelineeditorhistory.py', line 82, in read_history_file for line in open(filename, ’r’):UnicodeDecodeError: ’gbk’ codec can’t decode byte 0xa7 in position 2167: illegal multibyte sequence

原因是Python的終端歷史文件中包含中文,但不能正確使用gbk解碼。查看了Python歷史文件(系統(tǒng)用戶目錄下的.python_history),其編碼方式為“utf-8”,而”history.py”中讀取歷史文件時使用的編碼方式為“gbk”,所以會報錯。

解決方法

在history.py中使用`for line in open(filename, ’r’)`來打開文件并讀取每一行,使用的是默認的編碼方式。需要根據(jù)不同文件的編碼方式傳入相應(yīng)的參數(shù)值。

1. 首先檢測出要打開的文件的編碼方式。

在類中定義一個私有方法_get_encoding,作用是檢測文件的編碼方式,并返回。(需要導(dǎo)入chardet包)

def _get_encoding(self, filename=None): if filename is None: return with open(filename, ’rb’) as f: return chardet.detect(f.read())[’encoding’]

2. 修改歷史文件內(nèi)容的讀取

encoding = self._get_encoding(filename) for line in open(filename, ’r’, encoding=encoding):self.add_history(lineobj.ReadLineTextBuff(ensure_unicode(line.rstrip())))

以上就是在終端啟動Python時報錯的解決方案的詳細內(nèi)容,更多關(guān)于終端啟動python報錯的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 赤壁市| 朔州市| 安泽县| 绵竹市| 南溪县| 耒阳市| 石渠县| 高尔夫| 盐津县| 赤峰市| 大埔县| 和硕县| 和田市| 娄烦县| 延长县| 桦川县| 洮南市| 漳浦县| 舟曲县| 兴和县| 射洪县| 伽师县| 马鞍山市| 凤城市| 东阿县| 依安县| 上虞市| 陇西县| 霍山县| 高安市| 平泉县| 喀喇| 芜湖市| 鄱阳县| 澳门| 北流市| 福鼎市| 原阳县| 博爱县| 正镶白旗| 鸡泽县|