如何关闭WRITEFUNCTION和WRITEDATA?
使用pycurl我有一个类调用curlUtil。在其中我有pageAsString(self,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中调用它,并且完全没有问题。但是,我不想重新初始化卷曲。我可能会设置一些特殊选项。
如何关闭WRITEFUNCTION和WRITEDATA?
答案 0 :(得分:1)
使用写入功能,而不是将其关闭可以为您节省很多麻烦。你可能想用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.