鍍金池/ 問(wèn)答/Python/ configparser模塊解析文件出錯(cuò)

configparser模塊解析文件出錯(cuò)

源碼如下:

# _*_ coding:utf-8 _*_
import os
import configparser
import codecs


# 獲取當(dāng)前目錄下中的配置文件
Path = os.path.join(os.getcwd(), os.listdir()[0])
print(Path)


def get_url(name):
    config = configparser.ConfigParser()
    config.read(Path)
    url = config.get("HTTP", name)
    return url
    

配置文件如下:

[HTTP]
baseurl = https://mo.1394x.com
port = 8000
versoin = 3000

調(diào)用文件如下:

import unittest
import requests
import sys
sys.path.append("..")
from config import readconfigfile as config


class TestGetAwardData(unittest.TestCase):

    def setUp(self):
        # 接口地址
        self.host = config.get_url("baseurl")
        # 重慶時(shí)時(shí)彩中APP兩面歷史接口地址
        self.base_url = self.host + "/ssc/GetAwardData?version=3000"
        print(self.base_url)

    def test_status_code(self):
        """驗(yàn)證接口返回狀態(tài)碼是否是200"""
        st_code = requests.get(self.base_url).status_code
        st_json = requests.get(self.base_url).json()
        self.assertEqual(st_code, 200)
        if st_code != 200:
            print("接口狀態(tài)返回錯(cuò)誤!!")
        self.assertEqual(st_json['state'], 200)
        self.assertEqual(st_json['items']['state'], True)
        self.assertEqual(st_json['error'], None)
        print(len(st_json))
        self.assertNotEqual(len(st_json), 0)

    def tearDown(self):
        pass


if __name__ == '__main__':
    unittest.main()
    

以上代碼去調(diào)用的時(shí)候,提示

Traceback (most recent call last):
  File "E:/python_script/AutoTest/Api/Cqssc_api/case/test_01.py", line 12, in setUp
    self.host = config.get_url("baseurl")
  File "..\config\readconfigfile.py", line 25, in get_url
    config.read(Path)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\configparser.py", line 697, in read
    self._read(fp, filename)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\configparser.py", line 1015, in _read
    for lineno, line in enumerate(fp, start=1):
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 482: illegal multibyte sequence

百度好久了,一直沒(méi)有找到解決辦法,請(qǐng)大神指點(diǎn)!1

回答
編輯回答
短嘆
config.read(Path, encoding='UTF-8')
2018年4月20日 14:32