python3 pycurl 出现 TypeError: string argument expected, got 'bytes' 解决方案

用pycurl请求指定链接并返回结果时出现 TypeError: string argument expected, got 'bytes'  错误

经过排查问题出现在使用StringIO的write方法上,用BytesIO替代StringIO即可解决问题,代码如下:

import pycurl
import json
from io import *
try:
    c = pycurl.Curl()
    b = StringIO()
    c.setopt(pycurl.WRITEFUNCTION,b.write)
    c.setopt(c.URL, 'https://weixin.doviews.com/wxapi')
    c.setopt(pycurl.SSL_VERIFYPEER, 1)
    c.setopt(pycurl.SSL_VERIFYHOST, 2)
    #windows 要指定证书的路径不然会出现
    #(77, "SSL: can't load CA certificate file E:\\curl\\ca-bundle.crt")
    #证书路径就在curl下载的压缩包里面。mac/linux下面可以注释掉。
    #c.setopt(pycurl.CAINFO, "E:\curl\ca-bundle.crt")
    #
    c.perform()
    result = b.getvalue().decode("utf-8")
    print(result)
except BaseException as e:
    print(e)
finally:
    b.close()
    c.close()



你可能感兴趣的:(python,解决方案,python,string)