0

如何关闭 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 中都调用它,完全没有问题。但是,我不想重新初始化 curl。我可能设置了一些特殊选项。

如何关闭 WRITEFUNCTION 和 WRITEDATA?

4

1 回答 1

2

使用 writefunction,而不是关闭它会为你省去很多麻烦。您可能想通过使用 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.
于 2008-11-17T23:28:53.957 回答