如何关闭WRITEFUNCTION和WRITEDATA?

使用pycurl我有一个叫curlUtil的类。在其中,我有pageAsString(自己,URL),它返回一个字符串。

为此,我设置了WRITEFUNCTION。现在在downloadFile(self,URL,fn,overwrite = 0)中,我执行了open和self.c.Setopt(pycurl.WRITEFUNCTION,0)这会引起问题。 Int不是有效的参数。

然后,我假设WRITEDATA将覆盖该值,否则将出现NOWRITEFUNCTION推荐。 NOWRITEFUNCTION不存在,所以我只用了WRITEDATA而Python崩溃了。

我编写了一个称为reboot()的快速函数,它将关闭curl,再次将其打开,然后调用reset将其置于默认状态。我在pageAsString和downloadFile中都调用它,完全没有问题。但是,我不想重新初始化curl。我可能设置了一些特殊选项。

如何关闭WRITEFUNCTION和WRITEDATA?

最佳答案

使用write函数,而不是关闭它会为您省去很多麻烦。您可能想利用WRITEFUNCTION重写pageAsString。

举个例子:

from cStringIO import StringIO
c = pycurl.Curl()
buffer = StringIO()
c.setopt(pycurl.WRITEFUNCTION, buffer.write)
c.setopt(pycurl.URL, "http://example.com")
c.perform()
...
buffer.getvalue() # will return the data fetched.

关于python - Pycurl WRITEDATA WRITEFUNCTION冲突/崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/294960/

10-09 12:42