pycurl.multicurl-无法获取我的返回结果,只有对象内存地址

问题描述

今晚我一直在尝试使示例代码在https://fragmentsofcode.wordpress.com/2011/01/22/pycurl-curlmulti-example/下工作,这让我感到困惑(不难)。

m = pycurl.CurlMulti()
for url in urllist:
    response = io.StringIO()
    handle = pycurl.Curl()
    handle.setopt(pycurl.URL,url)
    handle.setopt(pycurl.WRITEDATA,response)
    req = (url,response)
    m.add_handle(handle)
    reqs.append(req)

# Perform multi-request.
# This code copied from pycurl docs,modified to explicitly
# set num_handles before the outer while loop.
SELECT_TIMEOUT = 1.0
num_handles = len(reqs)
while num_handles:
    ret = m.select(SELECT_TIMEOUT)
    if ret == -1:
            continue
    while 1:
            ret,num_handles = m.perform()
            if ret != pycurl.E_CALL_MULTI_PERFORM:
                    break

for req in reqs:
    # req[1].getvalue() contains response content
        print(req[1].getvalue())

我尝试了以下打印

  • req [1]
  • req [1] .getvalue()
  • req [1] .getvalue()。decode('ISO-8859-1')

我最近来的是为所有获取的URL打印类似以下的内容

  • _io.StringIO对象位于0x7f19f931d9d8

我也尝试过使用io.BytesIO获得相同的结果。

代码中的注释来自原始作者,我更改了一些我认为与版本有关的小事情,并删除了相关注释。

如何在该内存地址而不是仅在该地址处打印对象的内容?

编辑: print(req [1] .getvalue())引发以下错误

print(req [1] .getalue()) AttributeError:'_io.BytesIO'对象没有属性'getalue

所以我把它压成这样的变量

temp = req [1] .getvalue() 打印(温度)

,它只是返回带有单引号的b,如下所示: b''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...