Pycurl WRITEDATA WRITEFUNCTION столкновение / сбой - PullRequest
0 голосов
/ 17 ноября 2008

Как отключить 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?

1 Ответ

1 голос
/ 18 ноября 2008

использование функции записи вместо ее отключения избавит вас от неприятностей. Возможно, вы захотите переписать страницу pageAsString, используя WRITEFUNCTION ..

в качестве примера:

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.
...