2008-11-17 3 views
0

Как отключить WRITEFUNCTION и WRITEDATA?Pycurl WRITEDATA WRITEFUNCTION столкновение/авария

Использование pycurl У меня есть класс calllUtil. В нем у меня есть pageAsString (self, URL), который возвращает строку.

Для этого I setopt WRITEFUNCTION. Теперь в downloadFile (self, URL, fn, overwrite = 0) Я делаю open и self.c.Setopt (pycurl.WRITEFUNCTION, 0), которые вызывают проблемы. Int не является допустимым аргументом.

Тогда я предполагал, что WRITEDATA перезапишет это значение или будет вознаграждено NOWRITEFUNCTION. NOWRITEFUNCTION не существует, поэтому я просто использовал WRITEDATA и Python.

Я написал быстрый func под названием reboot(), который закрывает curl, открывает его снова и вызывает сброс, чтобы поместить его в состояние по умолчанию. Я называю это как в pageAsString, так и в downloadFile, и проблем нет. Но я не хочу повторно инициализировать завиток. Могут быть некоторые специальные настройки, которые я задал.

Как отключить WRITEFUNCTION и WRITEDATA?

ответ

1

, используя функцию write, вместо того, чтобы отключать ее, сэкономит вам много неприятностей. вы можете переписать 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. 
+0

Мой pageAsString работает подобным образом. Проблема заключается в том, что я открываю файл в do setpot (pycurl.WRITEDATA, файл). Однако я мог бы изменить его так, чтобы он использовал writedata, но я хотел знать, как отключить его, в случае необходимости отключить другой вариант. – 2008-11-17 23:45:49

Смежные вопросы