gpt4 book ai didi

python - 无法将 *IO() 对象分配给 WRITEDATA,pycurl

转载 作者:太空狗 更新时间:2023-10-30 02:19:44 25 4
gpt4 key购买 nike

还有其他人注意到 pycurl 示例在 Python 2.* 上不起作用吗?

import pycurl
from StringIO import StringIO

buffer = StringIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://pycurl.sourceforge.net/')
c.setopt(c.WRITEDATA, buffer)
c.perform()
c.close()

body = buffer.getvalue()
# Body is a string in some encoding.
# In Python 2, we can print it without knowing what the encoding is.
print(body)

然后我得到这样的失败

Traceback (most recent call last):
File "./get_python2.py", line 9, in <module>
c.setopt(c.WRITEDATA, buffer)
TypeError: invalid arguments to setopt

分配 WRITEFUNCTION 及其他功能似乎与宣传的一样。有人知道这里发生了什么吗?

最佳答案

我认为 docs有点表明当你没有真正的文件对象时你必须使用 WRITEFUNCTION:

On Python 3 and on Python 2 when the value is not a true file object, WRITEDATA is emulated in PycURL via WRITEFUNCTION.

所以你需要使用:

c.setopt(c.WRITEFUNCTION, buffer.write)

编辑:

PycURL Quickstart使用 WRITEDATA 作为 StringIO 的示例,但它需要 PycURL >= 版本 7.19.3:

As of PycURL 7.19.3 WRITEDATA accepts any Python object with a write method

关于python - 无法将 *IO() 对象分配给 WRITEDATA,pycurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27808835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com